1

我正在尝试将行写入一个文本文件,这个工作接受它似乎每次都会覆盖最后一行。我希望它写入下一行而不是覆盖。这是我正在使用的代码

 Dim FileNumber As Integer = FreeFile()
 FileOpen(FileNumber, "c:\Converted.txt", OpenMode.Output)
 PrintLine(FileNumber, convertedDir)
 FileClose(FileNumber)
4

2 回答 2

2

您正在使用旧的 (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
于 2013-08-18T09:19:10.207 回答
1

对于基于现有代码的快速解决方案,请更改行

FileOpen(FileNumber, "c:\Converted.txt", OpenMode.Output)

FileOpen(FileNumber, "c:\Converted.txt", OpenMode.Append)

然而,你真的应该更新你的文件编写方法,因为 FileOpen 和类似的东西只是为了与旧的 VB 和 VBA 程序(和程序员 :) 兼容。有关更现代的解决方案,请查看 varocarbas 的答案。

于 2013-08-18T11:19:28.130 回答