0

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

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

3 回答 3

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对象,您也可以保持相同的名称,如果它使代码对您更具可读性。

于 2013-01-29T00:26:18.600 回答
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")
于 2013-01-29T00:27:23.427 回答
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()
于 2013-01-29T01:02:16.223 回答