2012-06-14 51 views
2

在我的vb.net代碼中使用streamwriter寫入已經作爲輸入的文件表格。該進程無法訪問該文件,因爲它正在被另一個進程使用.-在寫入vb.net中的文件時出錯

Dim strContents As String 
     Dim objReader As StreamReader 
     Try 

      objReader = New StreamReader("C:\test.txt") 
      strContents = objReader.ReadToEnd() 
      objReader.Close() 

     Catch Ex As Exception 

     End Try 
     Dim Contents As String 
     Dim bAns As Boolean = False 
     Dim objWriter As StreamWriter 
     Dim FileStream As System.IO.FileStream 
     Try 

      FileStream = New FileStream("C:\test.txt", FileMode.Open, FileAccess.ReadWrite) 

      objWriter = New StreamWriter("C:\test.txt") 
      objWriter.Write("fdgdfgdjkljljklg") 
      objWriter.Close() 
      bAns = True 
     Catch Ex As Exception 


     End Try 

在一些系統中它的工作正常,但在其他一些工作站中它顯示了主題中提到的錯誤。

什麼限制在這裏訪問文件? 任何人都可以幫助我嗎?

+0

一些進程已打開該文件。它可能是你自己的代碼,也可能是其他的東西。調查一下,找出它開放的過程和原因。隨機示例:也許用戶在Word中打開文件。對不起,但沒有更多細節,不可能變得更有幫助。 – MarkJ

回答

2

什麼限制訪問此文件?

事實上,你沒有處理流,因此進程正在鎖定文件。 A StreamWriter正在持有該文件的非託管句柄。如果你不處理這個句柄,其他線程/進程無法打開文件。

我會建議你總是包裹IDisposable資源Using聲明,以確保妥善處置(即使有異常的塊內拋出):

Using filestream As New StreamWriter(Inifile, True, System.Text.Encoding.UTF8) 
    ' ... use the filestream here to write to the file 
End Using 
+0

感謝您的回覆。遺憾的是,您提供的代碼也無法正常工作。如果真的有什麼錯誤,它在某些系統中如何工作而不是其他? – user1357872

相關問題