我正在尝试将行写入一个文本文件,这个工作接受它似乎每次都会覆盖最后一行。我希望它写入下一行而不是覆盖。这是我正在使用的代码
Dim FileNumber As Integer = FreeFile()
FileOpen(FileNumber, "c:\Converted.txt", OpenMode.Output)
PrintLine(FileNumber, convertedDir)
FileClose(FileNumber)
我正在尝试将行写入一个文本文件,这个工作接受它似乎每次都会覆盖最后一行。我希望它写入下一行而不是覆盖。这是我正在使用的代码
Dim FileNumber As Integer = FreeFile()
FileOpen(FileNumber, "c:\Converted.txt", OpenMode.Output)
PrintLine(FileNumber, convertedDir)
FileClose(FileNumber)
您正在使用旧的 (VB6/VBA) 代码,最好使用 .NET StreamWriter
:
Dim append As Boolean = True
Using writer As System.IO.StreamWriter = New System.IO.StreamWriter("c:\Converted.txt", append)
writer.WriteLine(convertedDir)
End Using
append
指示是否应附加给定文件。尽管如此,正如 Boris B. 所建议的那样,您可以始终将此变量设置为,True
因为StreamWriter
它能够自动处理这两种情况(现有文件与否)。
无论如何,我在“理论上正确”的处理方式下面包括StreamWriter
(通过append property
根据给定文件是否存在的事实来更改):
Dim append As Boolean = False
Dim fileName As String = "c:\Converted.txt"
If (System.IO.File.Exists(fileName)) Then
append = True
End If
Using writer As System.IO.StreamWriter = New System.IO.StreamWriter(fileName, append)
writer.WriteLine(convertedDir) 'Writes to a new line
End Using
对于基于现有代码的快速解决方案,请更改行
FileOpen(FileNumber, "c:\Converted.txt", OpenMode.Output)
到
FileOpen(FileNumber, "c:\Converted.txt", OpenMode.Append)
然而,你真的应该更新你的文件编写方法,因为 FileOpen 和类似的东西只是为了与旧的 VB 和 VBA 程序(和程序员 :) 兼容。有关更现代的解决方案,请查看 varocarbas 的答案。