我无法将此值写入两个单独的文本文件中。它只写一个。
Public Class frmIceCream
Dim tw As System.IO.TextWriter
然后在表单加载中我有以下内容:
tw = New System.IO.StreamWriter("C:\Users\F\Documents\Temp junk\sundae.txt", True)
tw.WriteLine("5")
tw = New System.IO.StreamWriter("C:\Users\F\Documents\Temp junk\banana.txt", True)
tw.WriteLine("5")
答案 0 :(得分:2)
对于尽可能短的代码段,您可以使用File.WriteAllText:
File.WriteAllText("C:\Users\F\Documents\Temp junk\sundae.txt", "5")
File.WriteAllText("C:\Users\F\Documents\Temp junk\banana.txt", "5")
如果您想继续使用您的方法,通常最好保持文件尽可能短。我会将您的文件操作包装到Using
块中,这样StreamWriter
会自动处理(和关闭):
Using tw As New System.IO.StreamWriter("C:\Users\F\Documents\Temp junk\sundae.txt", True)
tw.WriteLine("5")
End Using
Using tw As New System.IO.StreamWriter("C:\Users\F\Documents\Temp junk\banana.txt", True)
tw.WriteLine("5")
End Using
请注意,即使您在技术上使用不同的tw
对象,也可以使用相同的名称,如果它使代码更易于阅读。
答案 1 :(得分:2)
在关闭其他文件之前,不能重复使用该变量。打开两个文件可能更容易。试试这个:
Dim tw1 as System.IO.TextWriter, tw2 as System.IO.TextWriter
tw1 = New System.IO.StreamWriter("C:\Users\F\Documents\Temp junk\sundae.txt", True)
tw1.WriteLine("5")
tw2 = New System.IO.StreamWriter("C:\Users\F\Documents\Temp junk\banana.txt", True)
tw2.WriteLine("5")
答案 2 :(得分:0)
您最有可能处理的问题是第一个文本文件为空。
写入硬盘是很昂贵的,所以TextWriter使用一个缓冲区来保存一些文本,然后一次写入所有文本。尝试使用tw.Flush()
写入缓冲区中剩余的内容,然后使用tw.Close()
释放资源。
这应该有效:
tw = New System.IO.StreamWriter("C:\Users\F\Documents\Temp junk\sundae.txt", True)
tw.WriteLine("5")
tw.Flush()
tw.Close()
tw = New System.IO.StreamWriter("C:\Users\F\Documents\Temp junk\banana.txt", True)
tw.WriteLine("5")
tw.Flush()
tw.Close()