流写入器没有抛出异常
本文关键字:抛出异常 | 更新日期: 2023-09-27 18:09:30
在下文中,如果文件不存在,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();
为什么?
FileStream fs = new FileStream(fileName, FileMode.Append);
如果该文件不存在,则创建该文件(如果存在则追加)。
假设从你的帖子(这是没有问题的!)你不希望它首先创建一个文件调用File.Exists
来确保文件存在。
如果您想要确保您正在添加到现有文件中,请在写入之前先使用FileMode.Open
,然后使用Seek
。对于File.Exists
,在检查之后但在FileStream
构建之前,其他进程删除文件的机会(非常渺茫)。
试试这个:
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()
{
}