gpt4 book ai didi

vb.net - 写入文件时保留现有文本

转载 作者:行者123 更新时间:2023-12-04 05:08:38 24 4
gpt4 key购买 nike

Tester.txt它只是说“你好”。

我现在运行这个:

Sub Main()
Dim fileName As String
Dim aFileStream As FileStream
Dim aWriter As StreamWriter
fileName = "...\Tester.txt"
Try
aFileStream = New FileStream(fileName, FileMode.OpenOrCreate)
aWriter = New StreamWriter(aFileStream)
aWriter.WriteLine("World")
Catch ex As Exception
MessageBox.Show("found this {0}", ex.Message)
Finally
If aWriter IsNot Nothing Then
aWriter.Close()
End If
If aFileStream IsNot Nothing Then
aFileStream.Close()
End If
End Try

End Sub

现在“Hello”已经被“World”覆盖了。

我想保留文件中的现有文本,所以我想我可以先将该文本读入一个变量,然后再写入新内容:
Sub Main()
Dim fileName As String
Dim aFileStream As FileStream
Dim aWriter As StreamWriter
Dim aReader As StreamReader
fileName = "...\Tester.txt"
Try
aFileStream = New FileStream(fileName, FileMode.OpenOrCreate)

aReader = New StreamReader(aFileStream)
Dim myContent As String = aReader.ReadToEnd()

aWriter = New StreamWriter(aFileStream)
aWriter.WriteLine("World")

Catch ex As Exception
MessageBox.Show("found this {0}", ex.Message)
Finally
If aWriter IsNot Nothing Then
aWriter.Close()
End If
If aReader IsNot Nothing Then
aReader.Close()
End If
If aFileStream IsNot Nothing Then
aFileStream.Close()
End If
End Try

End Sub

这是保留文件中已有文本的标准方法吗?
我可以在不使用 StreamReader 实例的情况下保留现有信息吗? ?

最佳答案

当然 - 您正在寻找的名称是 Append .例如,您可以使用 AppendAllText ,如果您更喜欢共享调用(不创建任何类的实例)。或通过 StreamWriter , 通过 this constructor .对于您的情况,您可以替换此部分:

Dim fileName As String
Dim aFileStream As FileStream
Dim aWriter As StreamWriter
fileName = "...\Tester.txt"
Try
aFileStream = New FileStream(fileName, FileMode.OpenOrCreate)
aWriter = New StreamWriter(aFileStream)
aWriter.WriteLine("World")

使用这个(请注意,我还将您的代码压缩为更少的行,结果相同):
Dim aWriter As StreamWriter
Try
aWriter = New StreamWriter("...\Tester.txt", True)
aWriter.WriteLine("World")

World将附加到您的文件末尾。如果文件不存在,它会被创建,所以它已经包含了 FileMode.OpenOrCreate在幕后。

使用 AppendAllText ,它变得更短:
IO.File.AppendAllText("...\Tester.txt", "World")

作为旁注,您可以避免在您的 Finally 中调用它。块:
If aReader IsNot Nothing Then
aReader.Close()
End If

如果您使用 Using clause :
Using aWriter As New StreamWriter("...\Tester.txt", True)
aWriter.WriteLine("World")
End Using

您仍然可以保留 Try/Catch子句,但最好更改它以捕获特定于文件的异常。例如,您可以使用 IOException .

关于vb.net - 写入文件时保留现有文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15174034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com