使用vb.net写入两个文本文件

时间:2013-01-29 00:23:28

标签: vb.net

我无法将此值写入两个单独的文本文件中。它只写一个。

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")

3 个答案:

答案 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()