Ars*_*nko 8 c# file-access ioexception
我的一个应用程序旨在读取(并且只读取)可能正在使用的文件.
但是,当读取已经打开的文件(例如Microsoft Word)时,此应用程序会抛出System.IO.IOException:
该进程无法访问文件'<filename here>',因为它正由另一个进程使用.
用于读取文件的代码是:
using (Stream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete))
{
// Do stuff here.
}
Run Code Online (Sandbox Code Playgroud)
当然,由于该文件已被使用,因此预计会出现此异常.
现在,如果我要求操作系统将文件复制到新位置,然后阅读它,它可以工作:
string tempFileName = Path.GetTempFileName();
File.Copy(fileName, tempFileName, true);
// ? We read the newly created file.
using (Stream stream = new FileStream(tempFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete))
{
// Do stuff here.
}
Run Code Online (Sandbox Code Playgroud)
什么是魔术File.Copy允许读取应用程序已经使用的文件,特别是如何使用这个魔术来读取文件而不制作临时副本?
好问题。看看这个,似乎建议仅使用 FileShare.ReadWrite 是关键,值得一试。
http://www.geekzilla.co.uk/viewD21B312F-242A-4038-9E9B-AE6AAB53DAE0.htm
| 归档时间: |
|
| 查看次数: |
1797 次 |
| 最近记录: |