单个类中的File Create()和WriteAllText()引发异常,
本文关键字:异常 WriteAllText File Create 单个类 | 更新日期: 2023-09-27 18:24:31
当我生成下面这样的代码时,
protected void Page_Load(object sender, eventAgrs e)
{
string xDoc ="Durgesh kumar rao";
File.Create(Server.MapPath("~/XML"));
File.WriteAllText(Server.MapPath("~/XML"), xDOC);
}
这个抛出异常,
进程无法访问该文件,因为另一个进程正在使用该文件
我是做错了什么,还是文件静态方法预处理安全检查,即它为什么抛出异常。
File.WriteAllText将为您创建文件(如果该文件不存在),因此您不需要调用File.create first。您收到错误是因为File.Create创建并打开文件;调用file.WriteAllText.
File.Create
创建文件并在其周围返回一个打开的FileStream
,因此您已经有了对以独占方式锁定它的文件句柄的引用。在任何情况下,您都应该处理结果,在任何其他情况下,都不应该丢弃调用的返回值。
所以,简而言之,处理你的创作:
using (FileStream stream = File.Create(path)) {
}
但是,如果文件不存在,File.WriteAllText
将创建该文件,因此对Create
的调用是多余的,而不是有问题的。不会返回"延迟"流,它只是做了事情,就这样,所以只需使用:
File.WriteAllText(Server.MapPath("~/XML"), xDOC);
File.Create
方法将返回一个FileStream
,使您可以访问该文件。你没有使用它。所以文件是打开的,并锁定给你写,因此,你的下一个语句就失效了。
但是,您根本不需要File.Create
:
http://msdn.microsoft.com/en-us/library/ms143375.aspx
Creates a new file, writes the specified string to the file, and then closes the file. If the target file already exists, it is overwritten.
File.WriteAllText
将免费为您处理创建(但它已被覆盖,因此需要注意)。