在下文中,如果文件不存在,则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();
为什么?
答案 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()
{
}