繁体   English   中英

streamWriter重写文件或追加到文件

[英]streamWriter rewrite the file or append to the file

我正在用这个

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#

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

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

尝试使用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

您可以将第二个参数传递给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进行追加。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM