从文件中读取而不阻止它被删除
Posted
技术标签:
【中文标题】从文件中读取而不阻止它被删除【英文标题】:Read from file without blocking it from being deleted 【发布时间】:2021-06-08 16:51:26 【问题描述】:我正在编写一个从网络上的文件共享读取的 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);
【问题讨论】:
【参考方案1】:FileShare has a Delete
flag。所以试试这个:
File.Open(
src,
FileMode.Open,
FileAccess.Read,
FileShare.ReadWrite | FileShare.Delete
)
【讨论】:
以上是关于从文件中读取而不阻止它被删除的主要内容,如果未能解决你的问题,请参考以下文章