Можно ли исправить двоичный файл, читаемый и записываемый StreamReader и StreamWriter?

Если я читаю и записываю двоичный файл с использованием StreamReader и StreamWriter, можно ли восстановить этот файл?

// Original Code - Corrupted the Destination File
using (Stream responseStream = response.GetResponseStream())
{
    using (StreamReader reader = new StreamReader(responseStream))
    {
        using (StreamWriter writer = new StreamWriter(destinationFileName, false))
        {
            writer.Write(reader.ReadToEnd());
        }
    }
}


// New Code - Destination File is Good
using (Stream responseStream = response.GetResponseStream())
{
    using (FileStream fs = File.Create(destinationFileName))
    {
        responseStream.CopyTo(fs);
    } 
}

Ответы на вопрос(2)

имеет ли смысл возвращаемая вами строка. Это ваш лучший вариант для восстановления данных. Как только у вас появится «правильный» ответ Строка, вам нужно попробовать разные кодировки для записи в двоичный файл. Попробуйте UTF8, UTF16 и Encoding.Default.

Я думаю, что потребуется немного потренироваться, чтобы восстановить некоторые данные. Обратите внимание, что, вероятно, вы потеряли часть этого навсегда.

Решение Вопроса

can the file be repaired?

Это зависит от того, что находится в файле. Если этоactually текст в правильной кодировке, тогда вы ничего не потеряете.

Если это действительно двоичные данные (например, JPEG), то выalmost certainly потеряли информацию, непоправимо. Просто не делайте этого, и если вы уже сделали это, я, вероятно, не буду пытаться "исправить" файлы - я бы их списал как "плохие".

Если бы вы использовали ISO-8859-1, вполне возможно, что все было бы хорошо - хотя все равно это был бы плохой код, который лучше было бы изменить.

Ваш ответ на вопрос