VB.NET遍历服务器PDF文件时触发“参数不正确”IOException异常求助
VB.NET遍历服务器PDF文件时触发“参数不正确”IOException异常求助
兄弟,我瞅了下你的代码,问题其实挺明显的!
你现在给Directory.GetFiles()传的是单个PDF文件的完整路径,但这个方法的作用是获取某个目录下的所有文件,参数得是目录路径啊!你直接塞个单个文件进去,系统直接懵圈,这不就报“参数不正确”的IOException了嘛。
另外你的路径还有两个小坑得注意:
- 服务器共享路径(UNC路径)的写法不对,正确的格式得是
\\服务器名\共享名$开头,你现在少了前面的两个反斜杠,系统根本识别不了这是网络共享目录; - 路径里还有多余的空格(比如
11e. xxxx里的空格),虽然Windows大多时候能兼容,但尽量规整一点,避免不必要的麻烦。
给你调整后的解决方案,照着改就行:
- 先把目标目录的路径修正成正确的UNC格式:
' 注意开头的双反斜杠,结尾不要带单个文件名 Dim targetDir As String = "\\xxxx.local\yyyyyyyy$\Accounts\11e. xxxx Management Accounts\xxxxxxx xxxxxxx\Sales Analysis\xxxxx Weekly Invoicing\xxxx\WK xx"
- 用
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
相关产品推荐
相关产品推荐

