Voj*_*nal 3 .net c# windows file-io filestream
这一行:
using (FileStream fs = File.Open(src, FileMode.Open, FileAccess.Read, FileShare.Read))
Run Code Online (Sandbox Code Playgroud)
抛出:
System.IO.IOException:进程无法访问文件"X",因为它正由另一个进程使用.
当我用以下代码替换:
File.Copy(src, dst, true);
using (FileStream fs = File.Open(dst, FileMode.Open, FileAccess.Read, FileShare.Read))
Run Code Online (Sandbox Code Playgroud)
有用.
但是为什么我可以复制,它肯定会读取文件的整个内容,同时被限制直接读取文件?有解决方法吗?
打开文件时,会检查访问模式和共享模式.任何进程的访问模式必须与其他进程的共享模式兼容.因此,如果A想要读取权限,则其他人必须允许以共享模式进行读取.写作也一样.
如果进程A打开了一个用于写入的文件,并且您说SharingMode.Read该调用将失败.在这种情况下,您说"其他人只能从文件中读取,而不是写入".
如果您指定ShareMode.ReadWrite您说"其他人可以读取或写入,我不在乎",如果没有指定其他进程ShareMode.Write,则允许您从该文件中读取.
| 归档时间: |
|
| 查看次数: |
1018 次 |
| 最近记录: |