1

こんにちは これは私が試しているコードです: ファイルが存在する場合は、そのファイルに追加し、そうでない場合は新しいファイルを作成します。行ごとにデータを書き込む必要があります

                    FileExists = File.Exists(NewFileName);
                    if (FileExists = false)
                    {
                        using (fs =new FileStream(NewFileName, FileMode.Create))
                        {
                            sw = new StreamWriter(fs);
                            MessageBox.Show(Record);
                            sw.WriteLine(Record);
                            fs.Close();
                        }
                    }
                    else
                    {
                        using (fd = new FileStream(NewFileName, FileMode.Append))
                        {
                            sw = new StreamWriter(fd);
                            MessageBox.Show(Record);
                            sw.WriteLine(Record,true);
                        }
                    }

                }
4

1 に答える 1

1

これは、コードがFileExists = false分岐に入らないためです。これは比較ではなく代入です。

エクストラを追加=して比較する (つまり make it FileExists == false) ことができますが、条件の反対をチェックする慣用的な方法は、単項演算子を使用すること!です。

動作させるには、次のように条件を変更します。

if (!FileExists)
    ...

さらに、 を閉じたりフラッシュしたりするのを忘れていましたStreamWriter

次のように、三項演算子を使用して両方の分岐を統合できます。

using (fs =new FileStream(NewFileName, FileExists ? FileMode.Append : FileMode.Create)) {
    sw = new StreamWriter(fs);
    MessageBox.Show(Record);
    sw.WriteLine(Record);
    sw.Close(); // <<== Add this line
    fs.Close();
}
于 2013-08-09T18:45:29.947 に答える