0

以下では、ファイルが存在しない場合、streamwriter は例外をスローしていません。例外が発生することを期待していましたが、なぜ発生しないのですか?どうすれば発生させることができますか?

var fileName = HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/emails.txt");
FileStream fs = new FileStream(fileName, FileMode.Append);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine(String.Format("{0}\t{1}", email, name));
sw.Flush();
sw.Close();
fs.Close();

なんで?

4

3 に答える 3

3
FileStream fs = new FileStream(fileName, FileMode.Append);

これにより、ファイルが存在しない場合は作成されます (存在する場合は追加されます)。

File.Existsあなたの投稿から仮定すると(それに疑問の余地はありません!) 、ファイルが存在することを確認するためにファイルの最初の呼び出しを作成したくないでしょう。

于 2013-04-17T09:08:48.383 に答える
2

既存のファイルに追加していることを確認したい場合は、書き込む前に最後まで使用FileMode.Openしてください。チェック後Seek、.File.ExistsFileStream

于 2013-04-17T09:31:00.663 に答える
1

これを試して:

try
{
    var fileName = HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/emails.txt");
    if (System.IO.File.Exists(fileName ))
    {
        FileStream fs = new FileStream(fileName, FileMode.Append);
        StreamWriter sw = new StreamWriter(fs);
        sw.WriteLine(String.Format("{0}\t{1}", email, name));
        sw.Flush();
        sw.Close();
        fs.Close();
    }
    else
    {
       //Throw error here
    }
}
catch()
{

}
于 2013-04-17T09:21:17.863 に答える