コードを変更して、ファイルを読み取り専用で開くことができました。 FileStream
とStreamReader
が文字列に変換されていないため、File.WriteAllText
を使用して問題が発生しました。StreamReaderを文字列に変換するにはどうすればよいですか?
これは私のコードです:アクセス後のStreamReaderを閉じるには、当然のことながら、重要である
string content = new StreamReader(fs, Encoding.Unicode).ReadToEnd();
:
static void Main(string[] args)
{
string inputPath = @"C:\Documents and Settings\All Users\Application Data\"
+ @"Microsoft\Windows NT\MSFax\ActivityLog\OutboxLOG.txt";
string outputPath = @"C:\FAXLOG\OutboxLOG.txt";
var fs = new FileStream(inputPath, FileMode.Open, FileAccess.Read,
FileShare.ReadWrite | FileShare.Delete);
string content = new StreamReader(fs, Encoding.Unicode);
// string content = File.ReadAllText(inputPath, Encoding.Unicode);
File.WriteAllText(outputPath, content, Encoding.UTF8);
}
'StreamReader'は' string'ではありません。あなたがコメントアウトした 'File.ReadAllText'メソッドを使うと' string'が得られます。 –
ファイルの内容を別のディレクトリにコピーしているようです。なぜファイルのコピーを出力ディレクトリに直接作成しないのですか? – docmanhattan
ねえ、あなたの最後の投稿について私のコメントを解読できたことをうれしく思っています...あなたのFileStreamで 'using'をやってみてください...ディスクIOをやっているときはいつでも試してみる必要があります...多くの潜在的な問題があります。それ以外のこれらのStreamReader.ReadToEnd()の回答は必要なものです。 – rfmodulator