【发布时间】:2013-10-02 03:13:15
【问题描述】:
我已经阅读了很多关于这个主题的其他帖子,但似乎没有一个可以直接解决我的问题(这让我感到惊讶)。
无论如何...我写了一个日志解析器,非常简单,我希望在解析之前从本地远程机器复制一个文件。我正在尝试复制的文件不断被写入,并且我在复制它时“随机”成功。有时它会起作用,有时我会收到“访问被拒绝”或 FileAccess 错误。其他几点:
- 每当我使用 Windows 资源管理器将文件复制到本地时,我从来没有
复制时遇到问题(这让我相信它是完美的
可以 100% 的时间复制文件)。 - 我始终可以在删除位置使用文本编辑器打开文件。
- 我不拥有正在写入的文件,也不希望以任何方式“锁定”它,以免实际写入该文件的应用程序失败。
有人对如何复制此文件有任何建议吗?
我当前使用的命令是:
File.Copy(this.txt_log_file_to_analyze.Text, sLogFileToAnalyze,true);
【问题讨论】:
-
this.txt_log_file_to_analyze.Text 值的调试示例将帮助我们确定您远程访问这台机器的准确程度(操作系统映射驱动器、FTP 等)
-
您是否尝试过
new FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.Read)以确保仅在“读取”模式下打开它?您可以将其写入内存流或将其保存到文件等中。 -
文件大小会很大吗??
-
其实我不认为你必须复制文件,如果文件的所有者用足够的共享选项打开它来读取它,而所有者正在写入它(在你的情况下是因为你说有可能),那么您可以仅以读取模式打开文件并处理您读取的内容。
-
我使用的是 UNC \\\。