3

このトピックに関する他の多くの投稿を読みましたが、私の問題を直接解決しているようには見えません (これには驚きました)。

とにかく...ログパーサーを作成しましたが、非常に単純に、ファイルを解析する前にリモートマシンからローカルにコピーしようとしています。コピーしようとしているファイルは常に書き込まれており、コピーに「ランダム」に成功しています。うまくいく場合もあれば、「アクセスが拒否されました」または FileAccess エラーが発生する場合もあります。その他のいくつかのポイント:

  • Windowsエクスプローラーを使用してファイルをローカルにコピーするときはいつでも、コピーに問題はありません(これにより 、ファイルを100%コピーすることは
    完全に可能であると私は信じています)。
  • テキスト エディタを使用して、削除した場所でいつでもファイルを開くことができます。
  • 私は書き込まれているファイルを所有しておらず、実際にこのファイルに書き込んでいるアプリケーションが失敗するような「ロック」はしたくありません。

このファイルをコピーする方法について何か提案はありますか?

私が使用している現在のコマンドは次のとおりです。

File.Copy(this.txt_log_file_to_analyze.Text, sLogFileToAnalyze,true);
4

1 に答える 1

7

次を使用してファイルを開く必要があると思います。

File.Open(this.txt_log_file_to_analyze.Text,FileMode.Open,FileAccess.Read,FileShare.ReadWrite)

次に、ファイルの内容を「手動で」コピーします。

using (var from = File.Open("path", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var to = File.OpenWrite("to_path"))
{
    from.CopyTo(to);
}

または、.NET 4.5の場合は、あるストリームの内容を別のストリームにコピーするにはどうすればよいですか?

上記の API を使用すると、ファイルへの排他的アクセスを望まないことを指定できます。

于 2013-09-26T08:55:35.787 に答える