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.Exists检查之后但在构建FileStream.

于 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 回答