.NET:创建新文件时的权限IOException?

时间:2010-03-25 14:53:44

标签: c# .net io

我正在尝试创建一个新文件并将XML写入其中:

FileStream output = File.Create(Path.Combine(PATH_TO_DATA_DIR, fileName));

参数的评估结果为:

C:\path\to\Data\test.xml

例外是:

The process cannot access the file 'C:\path\to\Data\test.xml' because it is being used by another process.

我在这里做错了什么?

UPDATE:此代码抛出相同的异常:

StreamWriter writer = new StreamWriter(Path.Combine(PATH_TO_DATA_DIR, fileName));

更新2:我尝试创建的文件在文件系统中不存在。那怎么可以使用呢?

更新3:更改为新文件名,现在可以使用了。我不知道为什么。也许我不知道在第一次调用中创建了它,并且在后续调用中失败了?

3 个答案:

答案 0 :(得分:0)

您的程序在创建文件后会保留对文件的处理以返回到FileStream对象。因为你没有指定它的访问权限,也许它不会让你抓住它。也许您应该考虑关闭它,然后通过指定打开方式(ReadOnly,ReadWrite,WriteOnly)以适当的方式重新打开它?

答案 1 :(得分:0)

该消息表示另一个进程正在使用该文件。如果你打开它可能正在使用它,或者它最初创建时如果流没有正确关闭也可以这样做。

首先检查以确保没有打开它。我会尝试更改fileName,看看你是否得到了同样的错误。如果你得到的错误比代码中的某些地方都要多,那么当它完成文件时,它就不会关闭一个流。

答案 2 :(得分:0)

不试图发出侮辱声,但文件夹是否存在?该文件是否已存在但被系统隐藏?并且运行该程序的用户帐户是否具有该文件夹的写入权限?您是否尝试过使用其他方法创建文件(例如使用File.WriteAllText(<path>, "Testing")来查看是否是您对File.Create的特定调用?