这是一个真正的挠头。根据所有文档,file.readAllLines
应该在完成后关闭它正在读取的文件。但是在我的应用程序中,当我尝试写入文件时,它会抛出一个 IO 异常,说“进程无法访问该文件,因为它正在被另一个进程使用”。这应该非常简单——有问题的文件只被引用两次——一次是在第一次启动时读入应用程序,然后是覆盖它时。这是代码:
首先,打开文件的代码(使用的文件路径是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)
它抛出一个异常,说明该文件仍在使用中。这是整个应用程序中唯一提到该文件的两次。