You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET遍历服务器PDF文件时触发“参数不正确”IOException异常求助

VB.NET遍历服务器PDF文件时触发“参数不正确”IOException异常求助

兄弟,我瞅了下你的代码,问题其实挺明显的!

你现在给Directory.GetFiles()传的是单个PDF文件的完整路径,但这个方法的作用是获取某个目录下的所有文件,参数得是目录路径啊!你直接塞个单个文件进去,系统直接懵圈,这不就报“参数不正确”的IOException了嘛。

另外你的路径还有两个小坑得注意:

  • 服务器共享路径(UNC路径)的写法不对,正确的格式得是\\服务器名\共享名$开头,你现在少了前面的两个反斜杠,系统根本识别不了这是网络共享目录;
  • 路径里还有多余的空格(比如11e. xxxx里的空格),虽然Windows大多时候能兼容,但尽量规整一点,避免不必要的麻烦。

给你调整后的解决方案,照着改就行:

  1. 先把目标目录的路径修正成正确的UNC格式:
' 注意开头的双反斜杠,结尾不要带单个文件名
Dim targetDir As String = "\\xxxx.local\yyyyyyyy$\Accounts\11e. xxxx Management Accounts\xxxxxxx xxxxxxx\Sales Analysis\xxxxx Weekly Invoicing\xxxx\WK xx"
  1. 用Directory.GetFiles()遍历目录下的所有PDF文件,还能加筛选条件只取PDF:
Dim path As String = "c:\serv\File.txt"
Dim sb As StringBuilder = New StringBuilder()

For Each file As String In Directory.GetFiles(targetDir, "*.pdf")
    Dim pdfReader As PdfReader = New PdfReader(file)
    For page As Integer = 1 To pdfReader.NumberOfPages
        Dim strategy As ITextExtractionStrategy = New SimpleTextExtractionStrategy()
        Dim currentText As String = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy)
        Dim theLines As String() = currentText.Split(vbLf)

        For Each theLine In theLines
            sb.AppendLine(theLine)
        Next
    Next
    pdfReader.Close() ' 别忘了关闭阅读器,不然文件会被占用,导致后续操作报错
Next

' 最后记得把StringBuilder的内容写入目标文件
File.WriteAllText(path, sb.ToString())

额外提醒一句:如果这个网络共享目录需要权限,得确保你的程序运行的账号有访问该目录的权限,不然也可能触发IO异常哦!

备注:内容来源于stack exchange,提问作者Robert Bee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 08:29:35