2016-06-10 3 views
0

네트워크 드라이브에서 160 개의 텍스트 파일을 읽으려고합니다. System.IO.StreamReader을 사용하고 있습니다. 어떤 이유로 약 22 번째 파일을 가져올 때 오류가 throw됩니다. IO 예외가 처리되지 않았습니다. 디스크에 공간이 충분하지 않습니다StreamReader IO 예외 디스크 공간이 충분하지 않습니다.

내 로컬 디스크와 네트워크 드라이브는 모두 충분한 공간 (이 작은 파일입니다) 이상을 가지고, 그리고 StreamReader이 예외를 슬로우하는 이유는 확실히 (A 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

StreamReader를 만들 때 예외가 발생하는지 알고 계십니까? 또는 Read를 호출하면? 또한 Exception Type은 무엇입니까? 'IOException' 또는보다 구체적으로? 또한, 더 이상 사용하지 않을 때 자동으로 ressources를 처리하기 때문에'Using' 블록을 사용하고 싶을 수도 있습니다 ... –

+0

StreamReader를 생성 할 때 발생합니다. 그것은'IOException'입니다. 'Using' 블록을 찾을 것입니다 - 고마워요. – Sastreen

+0

그냥'사용 중 '을 시도했습니다. 불운. 그래도 고마워. – Sastreen

답변

-1

나는이 파일을 네트워크 드라이브가 아닌 로컬 디렉토리에서 읽으려고했습니다.

그러나 (Windows를 통해) 복사 할 때 "디스크 공간이 충분하지 않습니다"라는 오류가 나타납니다. 파일은 총 40MB이고 무료로 수백 기가 바이트가 있습니다. "다시 시도하기"를 20 번 누른 후, 완료 될 때까지 천천히 더 천천히 복사했습니다. 이상하게도 충분히 파일을 42 번에 복사합니다.

그런 다음 문제없이 로컬 디렉토리에서 파일을 읽을 수있었습니다. 문제는 네트워크 드라이브와 관련이있는 것 같습니다.

내 프로그래밍 방식의 솔루션은 모든 내용이 복사 될 때까지 복사하려고했습니다 (일반적으로 약 1 분 정도 소요되었습니다). 지금은

'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 또는 뭔가로 전환 것 같아요. 최대 시간 제한을 추가해야합니다.

관련 문제