【问题标题】: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);
}

【问题讨论】:

    标签: c# streamreader


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-27
      • 2018-10-27
      • 2017-09-17
      • 1970-01-01
      相关资源
      最近更新 更多