我正在尝试将文字写入文本文件,这项工作接受它似乎每次都覆盖最后一行。我希望它写入下一行而不是覆盖。这是我正在使用的代码
Dim FileNumber As Integer = FreeFile()
FileOpen(FileNumber, "c:\Converted.txt", OpenMode.Output)
PrintLine(FileNumber, convertedDir)
FileClose(FileNumber)
答案 0 :(得分:1)
您正在使用旧的(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
答案 1 :(得分:1)
基于现有代码的快速解决方案更改行
FileOpen(FileNumber, "c:\Converted.txt", OpenMode.Output)
到
FileOpen(FileNumber, "c:\Converted.txt", OpenMode.Append)
但是,你应该真正更新你编写文件的方法,因为FileOpen和类似的只是为了兼容旧的VB& VBA程序(和程序员:)。如需更现代的解决方案,请查看varocarbas的答案。