Streamwriter不会抛出异常

时间:2013-04-17 09:06:30

标签: c#

在下文中,如果文件不存在,则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();

为什么?

3 个答案:

答案 0 :(得分:3)

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

如果该文件不存在,则会创建该文件(如果存在则附加到该文件中)。

假设您的帖子(其中没有任何问题!)您不希望它首先调用File.Exists来创建文件以确保文件存在。

答案 1 :(得分:2)

如果您想确保附加到现有文件,请在写入之前使用FileMode.Open然后Seek。 使用File.Exists,其他进程在检查后但在构建FileStream之前删除文件的可能性非常小。

答案 2 :(得分: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()
{

}