web-dev-qa-db-ja.com

streamWriterはファイルを書き換えるか、ファイルに追加します

私はこれを使っています

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#の使用

14
Asim Zaidi

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
16
Sean Thoman

StreamWritersのデフォルトの動作では、新しいファイルを作成するか、存在する場合は上書きします。ファイルに追加するには、ブール値を受け入れてtrueに設定するオーバーロードを使用する必要があります。サンプルコードでは、test.txtを5回書き換えます。

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

ファイルに追加する2番目のパラメーターをStreamWriterからenableまたはdisableに渡すことができます。

_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");
_
8
Reza Ebrahimi

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
bencobb

それであなたのコードの結果は何ですか?

デフォルトの動作は作成/上書きであるため、ファイルには数字の4以外は何も含まれていないと思いますが、上書きではないと言っていますか?

あなたはあなたがしていることをすることによってそれをファイルに上書きさせることができるはずです、そしてあなたはFileMode.AppendでFileStreamを作ることによって追加することができます。

1
Michael Holman