这是一个真正的头部划痕。根据所有文档,file.readAllLines
应在完成后关闭正在读取的文件。但在我的应用程序中,当我尝试写入文件时,它会抛出一个IO异常,说“进程无法访问该文件,因为它正在被另一个进程使用”。这应该非常简单 - 所涉及的文件只被引用两次 - 一次在第一次启动时读入应用程序,然后覆盖它时。下面的代码:VB 2012 - StreamReader不关闭
首先,打开的文件中的代码(文件路径使用的是c:\Test\cfg.fcs
):
Public Function ReadALine(ByVal File_Path As String, ByVal TotalLine As Integer, ByVal Line2Read As Integer) As String
Dim Buffer As Array
Dim Line As String
If TotalLine <= Line2Read Then
Return "No Such Line"
End If
Buffer = File.ReadAllLines(File_Path)
Line = Buffer(Line2Read)
Return Line
End Function
它完美,并且应该离开正常关闭的文件,对不对?但是当我稍后在另一个模块中运行以下内容时:
file = My.Computer.FileSystem.OpenTextFileWriter("c:\Test\cfg.fcs", False)
file.WriteLine(Form1.GlobalVariables.serialNumber)
它引发一个异常说明文件仍在使用中。这是整个应用程序中仅有的两次,该文件甚至被提及。
如果您不调用第一个方法并调用_at least two times_包含最后两行的代码,会发生什么? – Steve
你关闭了由OpenTextFileWriter打开的文件流吗? –