【发布时间】:2012-06-22 19:17:42
【问题描述】:
这是我的想法:
var file = @"myfile";
File.Open(file,
FileMode.Open, FileAccess.ReadWrite, FileShare.None);
using (StreamReader rdr = new StreamReader(File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read)))
{
rdr.ReadToEnd();
}
var t = File.ReadAllBytes(file);
File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read) 和 File.ReadAllBytes 都不能读取文件数据。
从我以前的 c++ 和 winapi 时代开始,我确实记得,如果您有备份权限,曾经有一种读取锁定文件的好方法,但我不知道如何在 c# 中获取和使用这些文件。
谁能提供一个示例,说明如何在文件被锁定后读取文件?
【问题讨论】:
-
如果它被锁定,您将无法阅读它。这有点像锁定的意义。
-
有问题的锁定是由其他进程完成的。我将在更新程序中使用它,检查有问题的文件是否需要替换(例如,如果更新的进程需要重新启动)
-
"FileShare.None" 是一个完全锁,因此尝试从中读取是行不通的。原始打开必须至少允许“FileShare.Read”