web-dev-qa-db-ja.com

StreamReaderを文字列に変換するにはどうすればよいですか?

ファイルを読み取り専用で開くことができるようにコードを変更しました。 FileStreamStreamReaderは文字列に変換されないため、File.WriteAllTextの使用に問題があります。

これは私のコードです:

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);
}
18
Jake H.

streamReaderのReadToEnd()メソッドを使用します。

string content = new StreamReader(fs, Encoding.Unicode).ReadToEnd();

もちろん、アクセス後にStreamReaderを閉じることは重要です。したがって、 keyboardP などで示唆されているように、usingステートメントは理にかなっています。

string content;
using(StreamReader reader = new StreamReader(fs, Encoding.Unicode))
{
    content = reader.ReadToEnd();
}
44
Adam
string content = String.Empty;

using(var sr = new StreamReader(fs, Encoding.Unicode))
{
     content = sr.ReadToEnd();
}

File.WriteAllText(outputPath, content, Encoding.UTF8);
13
keyboardP

StreamReader.ReadToEnd()メソッドを使用します。

4
Sergei B.