从文件中读取而不阻止它被删除

Read from file without blocking it from being deleted

我正在编写一个 windows 服务来读取网络上的文件共享。有时文件被写入文件共享,然后很快连续删除。有没有一种方法可以在读取文件的同时允许删除文件?

基本上我有一个 filesystemwatcher 监视网络路径,然后在该目录的 Created 事件上检查文件路径,然后尝试在新线程上读取文件。当将文件写入目录的应用程序试图快速删除它时,它会收到 IOException,指出有另一个进程正在使用该文件。我没有在网络电脑上写app,不想打断它的正常功能

这是我的代码

public async Task Copy(string src, string dest) {
    using (FileStream srcReader = File.Open(src, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
    using (Stream destWriter = File.Create(dest)) {
       await srcReader.CopyToAsync(destWriter, cancelToken);
}

FileShare has a Delete flag。所以试试这个:

File.Open(
    src, 
    FileMode.Open, 
    FileAccess.Read, 
    FileShare.ReadWrite | FileShare.Delete
)