【发布时间】:2013-10-16 14:24:15
【问题描述】:
我正在监视一个文件夹中的新文件,当新文件出现时,我读取(并保存在 txt 中)文件如下:
FileStream file = File.Open(this.filePath, FileMode.Open, FileAccess.Read);
StreamReader reader = new System.IO.StreamReader(file);
string text = reader.ReadToEnd();
reader.Close();
如果我将源文件复制/粘贴到文件夹中,我会收到一个 IOExcpetion,告诉我该文件已被另一个进程使用。 如果我在文件夹中剪切/粘贴,一切正常。 此外,如果我将文件从另一台机器复制(但在这种情况下也剪切)/粘贴到受监控的文件夹中,也会发生锁定问题。
你知道发生了什么吗?
有没有更安全的方法来访问文件以避免这种类型的锁定?
谢谢!
【问题讨论】:
-
你如何监控文件夹..向我们展示代码..你在使用 FileSystemWatcher 吗?
-
我正在使用 FileSystemWatcher(在一个包装类中以监控多个文件夹)
-
很可能与您的
FileSystemWatcher有冲突!给我们看代码 -
当然!我使用了这个代码:codeproject.com/Articles/271669/…
-
我会说从另一台机器上它只是更多,因为文件完成它需要时间并且复制过程持有文件人质。使用文件添加逻辑以确保在执行任何处理之前完全可以访问文件时,这是一种很好的做法。 FileSystem 对文件的访问速度非常快,因此您的流程逻辑会立即启动,因此您要确保它没有被锁定。
标签: c# file-io ioexception