我正在尝试创建一个新文件并将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:更改为新文件名,现在可以使用了。我不知道为什么。也许我不知道在第一次调用中创建了它,并且在后续调用中失败了?
答案 0 :(得分:0)
您的程序在创建文件后会保留对文件的处理以返回到FileStream对象。因为你没有指定它的访问权限,也许它不会让你抓住它。也许您应该考虑关闭它,然后通过指定打开方式(ReadOnly,ReadWrite,WriteOnly)以适当的方式重新打开它?
答案 1 :(得分:0)
该消息表示另一个进程正在使用该文件。如果你打开它可能正在使用它,或者它最初创建时如果流没有正确关闭也可以这样做。
首先检查以确保没有打开它。我会尝试更改fileName,看看你是否得到了同样的错误。如果你得到的错误比代码中的某些地方都要多,那么当它完成文件时,它就不会关闭一个流。
答案 2 :(得分:0)
不试图发出侮辱声,但文件夹是否存在?该文件是否已存在但被系统隐藏?并且运行该程序的用户帐户是否具有该文件夹的写入权限?您是否尝试过使用其他方法创建文件(例如使用File.WriteAllText(<path>, "Testing")
来查看是否是您对File.Create
的特定调用?