gpt4 book ai didi

c# - 无法打开文件流进行读取,但我仍然可以复制文件?

转载 作者:可可西里 更新时间:2023-11-01 09:47:14 26 4
gpt4 key购买 nike

这一行:

using (FileStream fs = File.Open(src, FileMode.Open, FileAccess.Read, FileShare.Read))

抛出:

System.IO.IOException: The process cannot access the file 'X' because it is being used by another process.

当我将行替换为:

File.Copy(src, dst, true);
using (FileStream fs = File.Open(dst, FileMode.Open, FileAccess.Read, FileShare.Read))

有效。

但为什么我可以复制,肯定会读取文件的全部内容,而不能直接读取文件?有解决方法吗?

最佳答案

当您打开文件时,系统会检查访问模式和共享模式。任何进程的访问模式必须与其他进程的共享模式兼容。因此,如果 A 想要阅读,其他人必须以共享模式允许阅读。写作也一样。

如果进程 A 已打开一个文件进行写入,而您说 SharingMode.Read 调用将失败。在这种情况下,您是在说“其他人只能从文件中读取,而不能写入”。

如果你指定了 ShareMode.ReadWrite 你是在说“其他人可以读或写,我不在乎”并且如果没有其他进程指定了 ShareMode.Write您可以从文件中读取。

关于c# - 无法打开文件流进行读取,但我仍然可以复制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46096941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com