Как преобразовать StreamReader в строку? - PullRequest
17 голосов
/ 22 декабря 2011

Я изменил свой код, чтобы открыть файл только для чтения. Теперь у меня проблемы с использованием File.WriteAllText, потому что мои FileStream и StreamReader не преобразованы в строку.

Это мой код:

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);
}

Ответы [ 3 ]

43 голосов
/ 22 декабря 2011

используйте метод ReadToEnd () StreamReader:

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

Конечно, важно закрыть StreamReader после доступа.Следовательно, оператор using имеет смысл, как это предлагается keyboardP и др.

string content;
using(StreamReader reader = new StreamReader(fs, Encoding.Unicode))
{
    content = reader.ReadToEnd();
}
13 голосов
/ 22 декабря 2011
string content = String.Empty;

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

File.WriteAllText(outputPath, content, Encoding.UTF8);
4 голосов
/ 22 декабря 2011

Использовать StreamReader.ReadToEnd() метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...