【问题标题】:streamWriter rewrite the file or append to the filestreamWriter 重写文件或追加到文件
【发布时间】:2011-09-13 17:16:49
【问题描述】:

我正在使用这个

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

}

如果 test.text 中有内容,此代码不会覆盖它。我有 2 个问题

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

使用 C#

【问题讨论】:

    标签: c# .net visual-studio visual-studio-2010


    【解决方案1】:

    试试 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
    

    【讨论】:

    • 然后你可以从FileStream而不是直接从文件名本身创建StreamWriterStreamWriter x = new StreamWriter(fcreate);
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      您可以将第二个参数传递给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");
      

      【讨论】:

      • 当我在 C# 中使用StreamWriter stream = new StreamWriter("YourFilePath"); 时,默认情况下会附加...
      【解决方案4】:

      您可以先使用 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);
      

      【讨论】:

      • StreamWriter swAppend = new StreamWriter(new FileStream("C:\\test.txt", FileMode.Append)); 对于一个班轮只需调用 writer.Close(); 在写入后刷新它
      【解决方案5】:

      那么你的代码的结果是什么?

      我希望文件只包含数字 4,因为默认行为是创建/覆盖,但您是说它没有覆盖?

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

      【讨论】:

        猜你喜欢
        • 2018-04-17
        • 1970-01-01
        • 1970-01-01
        • 2011-12-24
        • 2011-01-20
        • 1970-01-01
        • 1970-01-01
        • 2017-07-21
        相关资源
        最近更新 更多