If I read and wrote a binary file using StreamReader and StreamWriter, can the file be repaired?
// 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);
}
}
It depends what’s in the file. If it’s actually text in the right encoding, then you won’t have lost anything.
If it’s genuinely binary data (e.g. a JPEG) then you’ll almost certainly have lost information, irreparably. Just don’t do it, and if you’ve already done it, I probably wouldn’t try to “fix” the files – I’d write them off as “bad”.
If you’d used ISO-8859-1, it’s possible that all would have been well – although it would still have been bad code which would be better off changed.