5

テキストファイルに何かを書き込むために使用SteamWriterしていますが、古いデータを新しいデータで上書きしています。古いデータを上書きするのではなく、新しいデータを追加するようにするにはどうすればよいですか?
私のコード:

class Program
{
    const string filename = @"C:\log.txt";
    static void Main()
    {
        FileStream fs;
        fs = new FileStream(filename, FileMode.Create, FileAccess.Write);
        StreamWriter writer = new StreamWriter(fs);
        writer.WriteLine("test");

        writer.Close();
        fs.Close();
    }
}
4

5 に答える 5

12

を使用する場合、MSDNFileMode.Createよると:

オペレーティング システムが新しいファイルを作成する必要があることを指定します。ファイルが既に存在する場合は、上書きされます。これには、FileIOPermissionAccess.Write 権限が必要です。FileMode.Create は、ファイルが存在しない場合に CreateNew を使用するように要求することと同じです。それ以外の場合は、Truncate を使用してください。ファイルが既に存在するが隠しファイルである場合、 UnauthorizedAccessException 例外がスローされます。

したがってFileMode.Append、ファイルの末尾にコンテンツを追加する場合は、代わりに使用する必要があります。

ファイルが存在する場合はそれを開き、ファイルの最後までシークする、新しいファイルを作成します。これには、FileIOPermissionAccess.Append 権限が必要です。FileMode.Append は、FileAccess.Write と組み合わせてのみ使用できます。ファイルの末尾より前の位置をシークしようとすると、IOException 例外がスローされ、読み取りの試みは失敗し、NotSupportedException 例外がスローされます。

FileStream fs = new FileStream(filename, FileMode.Append, FileAccess.Write);
于 2012-10-25T09:29:09.273 に答える
0
fs = new FileStream(filename, FileMode.Append, FileAccess.Write);
于 2012-10-25T09:30:34.550 に答える
0

これを試して

string path = your file path;
   using(StreamWriter sw = new StreamWriter(path,true))
           {

                    sw.WriteLine("string here");
           }
于 2012-10-25T09:28:34.300 に答える
0

他の人が問題を指摘しているように、私はより簡単な解決策を提案すると思いました

File.AppendAllText(filename, "test");
于 2012-10-25T09:36:40.680 に答える