书写线覆盖最后一行

时间:2013-08-18 09:11:21

标签: vb.net

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

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

2 个答案:

答案 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的答案。