Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 写入线覆盖最后一行_Vb.net - Fatal编程技术网

Vb.net 写入线覆盖最后一行

Vb.net 写入线覆盖最后一行,vb.net,Vb.net,我正试图把这条线写进一个文本文件,它每次都会覆盖最后一行。我希望它写入下一行,而不是覆盖。这是我正在使用的代码 Dim FileNumber As Integer = FreeFile() FileOpen(FileNumber, "c:\Converted.txt", OpenMode.Output) PrintLine(FileNumber, convertedDir) FileClose(FileNumber) 如果您使用的是旧的(VB6/VBA)代码,最好使用.NETStrea

我正试图把这条线写进一个文本文件,它每次都会覆盖最后一行。我希望它写入下一行,而不是覆盖。这是我正在使用的代码

 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属性
):


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

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


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

感谢您的更新。我刚刚试过那个代码。它仍在覆盖最后一行。之前的代码正在将文件夹目录复制到新位置。我希望它能将转换后的目录作为新行写入,这样我就可以创建文件夹的日志。目前,它只是将最后一个文件夹写入已转换的文件夹。txt@user2693561此代码每次写入新行。如果文件c:\Converted.txt不存在,它将创建该文件并写入第一行。如果此文件已存在,则应将append标志设置为true,并继续写入新行。我将立即更新我的代码,以确保您正确使用它。@user2693561请测试我包含的新代码,并确认它每次都写入新行。如果您指定
new System.IO.StreamWriter(fileName,true),则不需要该
File.Exists
调用和
Dim append
如果文件存在,将追加该文件;如果文件不存在,则创建该文件。@BorisB。谢谢你的评论,我会马上更新我的答案。老实说,我通常依赖这种方法(总是正确的),尽管只是在非常特定的条件下,因为我不能100%确定streamwriter在这方面的性能在任何情况下都是完美的。你的答案是不完整的:你假设文件在那里,而没有让OP知道这是必要的。另外,我认为您不应该支持对旧代码的依赖。@varocabas:不,我没有任何假设
FileOpen
使用
OpenMode.Append
将创建文件。如果文件不存在,则文件的存在并不重要。至于对旧代码的依赖,至少可以说是有争议的。OP展示了他现有的代码,并问它有什么问题,我只是按照他自己的说法给出了答案。如果他问“我怎样才能…”或“最好的方式是什么…”,那么我可能会选择
我的.Computer.FileSystem.writealText
(我从未使用VB.NET的FileOpen,只是假设它按建议工作)。在回答OP的期望值这一问题上,你是对的(这就是为什么我的+1),尽管我确实认为,当有人使用如此陈旧的代码时,最好是告诉他更新的、适应性强的替代方案。@varocarbas:我同意,这就是您的答案:)已更新答案。请使用OpenMode.Append to Append而不是overwrite。
FileOpen(FileNumber, "c:\Converted.txt", OpenMode.Output)
FileOpen(FileNumber, "c:\Converted.txt", OpenMode.Append)