StreamReader IO异常磁盘上没有足够的空间

时间:2016-06-10 11:28:25

标签: vb.net file text streamreader ioexception

我正在尝试从网络驱动器中读取160个文本文件。我使用的是System.IO.StreamReader。出于某种原因,当它到达第22个文件时,它会抛出错误: IO异常未处理磁盘空间不足

我的本​​地磁盘和网络驱动器都有足够的空间(这些是小文件),我不太明白为什么StreamReader会抛出此异常(StreamWriter会产生更多义)。

以下是我的一些代码:

'This sub is called 160 times (each file)
Private Sub readFile(filePath as String)
    'error gets thrown on this line
    Dim reader As System.IO.StreamReader = New System.IO.StreamReader(filePath)
    'Reading through this file...
    '...
    '...
    reader.Close()
End Sub

感谢。

1 个答案:

答案 0 :(得分:-1)

我决定尝试从我的本地目录中读取这些文件,而不是从网络驱动器上读取。

然而,当我去复制它们(通过Windows)时,我收到错误:“磁盘空间不足”。文件总共40mb,我有几百gb免费。按“再试一次”20次后,它会越来越慢地复制,直到完成。奇怪的是,它会将这些文件分批复制42个。

然后,我能够从本地目录中读取它们没有问题。似乎问题与网络驱动器有关。

我的程序化解决方案是尝试复制它们直到它们全部被复制(通常需要大约一分钟)。

 'we start by copying all the files to a local drive. Since reading off the M: drive always throws lame exceptions...
 For Each f As String In My.Computer.FileSystem.GetFiles(fileDirectory)
     While (My.Computer.FileSystem.FileExists(toCopyTofileName)) = False
         Try
             My.Computer.FileSystem.CopyFile(f, toCopyTofileName)
         Catch ex As Exception
             Threading.Thread.Sleep(1000)
         End Try
     End While
 Next

目前,Threading.Thread.Sleep(1000)很好(我每秒只重试一次),但我想我会将其切换为Timer或其他东西。我还应该添加一个最大超时限制。