streamWriter重写文件或附加到文件

我正在使用这个

for($number=0; $number < 5; $number++){ StreamWriter x = new StreamWriter("C:\\test.txt"); x.WriteLine(number); x.Close(); } 

如果某些内容在test.text中,则此代码不会覆盖它。 我有两个问题

 1: how can I make it overwrite the file 2: how can I append to the same file 

使用C#

试试FileMode枚举器:

  FileStream fappend = File.Open("C:\\test.txt", FileMode.Append); // will append to end of file FileStream fcreate = File.Open("C:\\test.txt", FileMode.Create); // will create the file or overwrite it if it already exists 

StreamWriters的默认行为是创建一个新文件,如果存在则覆盖它。 要附加到文件,您需要使用接受布尔值的重载并将其设置为true。 在您的示例代码中,您将重写test.txt 5次。

 using(var sw = new StreamWriter(@"c:\test.txt", true)) { for(int x = 0; x < 5; x++) { sw.WriteLine(x); } } 

您可以将第二个参数传递给StreamWriterenabledisable追加到文件:

C#.Net

 using System.IO; // This will enable appending to file. StreamWriter stream = new StreamWriter("YourFilePath", true); // This is default mode, not append to file and create a new file. StreamWriter stream = new StreamWriter("YourFilePath", false); // or StreamWriter stream = new StreamWriter("YourFilePath"); 

C++.Net(C++/CLI)

 using namespace System::IO; // This will enable appending to file. StreamWriter^ stream = gcnew StreamWriter("YourFilePath", true); // This is default mode, not append to file and create a new file. StreamWriter^ stream = gcnew StreamWriter("YourFilePath", false); // or StreamWriter^ stream = gcnew StreamWriter("YourFilePath"); 

您可以先使用FileStream,然后将其传递给StreamWriter。

 FileStream fsOverwrite = new FileStream("C:\\test.txt", FileMode.Create); StreamWriter swOverwrite = new StreamWriter(fsOverwrite); 

要么

 FileStream fsAppend = new FileStream("C:\\test.txt", FileMode.Append); StreamWriter swAppend = new StreamWriter(fsAppend); 

那么代码的结果是什么?

我希望文件只包含数字4,因为默认行为是创建/覆盖,但你是说它不会被覆盖?

您应该能够通过执行您正在执行的操作来覆盖文件,并且可以通过使用FileMode.Append创建FileStream来追加。