【发布时间】:2015-02-13 10:33:09
【问题描述】:
我有以下 C# 代码:
static void Main(string[] args)
{
FileStream fileStream = null;
try
{
// read from file or write to file
fileStream = new FileStream(@"D:\FileLock.txt", FileMode.Open, FileAccess.Read, FileShare.None);
}
catch
{
}
finally
{
fileStream.Close();
}
}
我正在尝试使用以下 C (WinAPI) 代码将文件“D:\FileLock.txt”复制到另一个位置:
CopyFile(_T("D:\\FileLock.txt"), _T("D:\\temp\\FileLock.txt"),FALSE);
但我得到了 ERROR_SHARING_VIOLATION(如预期的那样)。
无论如何我可以绕过这个吗? (即在这些条件下复制文件)--无需修改 C# 代码
【问题讨论】:
-
这没有意义。如果有一种绕过文件共享的方法,那么有人会要求一种方法来禁止绕过文件共享,而其他人只会要求一种方法来绕过它,等等。你最终会陷入一个永无止境的循环.
-
您确定不能将 C# 代码更改为 FileShare.Read 吗?
-
让我换个说法。有没有办法复制正在使用的文件?
-
是的,在源文件上使用 FileShare.Read。
-
首先问问自己为什么文件被锁定
标签: c# file winapi mutual-exclusion