streamWriter重写文件或附加到文件

Aut*_*cus 14 .net c# visual-studio-2010 visual-studio

我正在使用这个

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

}
Run Code Online (Sandbox Code Playgroud)

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

1: how can I make it overwrite the file
2: how can I append to the same file
Run Code Online (Sandbox Code Playgroud)

使用C#

Sea*_*den 17

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

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


Sea*_*man 16

试试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
Run Code Online (Sandbox Code Playgroud)

  • 然后你就可以从`FileStream`直接从文件名本身创建`StreamWriter`而不是:'StreamWriter的X =新的StreamWriter(FCREATE);` (4认同)

Rez*_*imi 9

您可以将第二个参数传递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");
Run Code Online (Sandbox Code Playgroud)

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");
Run Code Online (Sandbox Code Playgroud)


ben*_*obb 5

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

FileStream fsOverwrite = new FileStream("C:\\test.txt", FileMode.Create);
StreamWriter swOverwrite = new StreamWriter(fsOverwrite);
Run Code Online (Sandbox Code Playgroud)

或者

FileStream fsAppend = new FileStream("C:\\test.txt", FileMode.Append);    
StreamWriter swAppend = new StreamWriter(fsAppend);
Run Code Online (Sandbox Code Playgroud)