-1

这是一个真正的挠头。根据所有文档,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)

它抛出一个异常,说明该文件仍在使用中。这是整个应用程序中唯一提到该文件的两次。

4

1 回答 1

0

对于遇到这个问题的其他人来说,解决方案很简单,但仍然违反直觉……问题只是命令的顺序。我将 file.writeline 移到了 suband 的底部,并且出于某种原因修复了它。奇怪的

于 2017-10-15T11:50:26.087 回答