РЕДАКТИРОВАТЬ: По-видимому, мои предложения неверны / недействительны / что угодно ... пожалуйста, используйте один из других, которые, без сомнения, были сильно пересмотрены до такой степени, что не может быть достигнута дополнительная производительность (иначе, это будет значит, они так же недействительны, как и я)
using (System.IO.StreamReader sr = new System.IO.StreamReader(@"C:\mydata.dat"))
{
using (System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\mynewdata.dat"))
{
byte[] bytes = new byte[1024];
int count = 0;
while((count = sr.BaseStream.Read(bytes, 0, bytes.Length)) > 0){
sw.BaseStream.Write(bytes, 0, count);
}
}
}
Читать все байты
byte[] bytes = null;
using (System.IO.StreamReader sr = new System.IO.StreamReader(@"C:\mydata.dat"))
{
bytes = new byte[sr.BaseStream.Length];
int index = 0;
int count = 0;
while((count = sr.BaseStream.Read(bytes, index, 1024)) > 0){
index += count;
}
}
Прочитать все байты / записать все байты (из ответа svick):
byte[] bytes = File.ReadAllBytes(@"C:\mydata.dat");
File.WriteAllBytes(@"C:\mynewdata.dat", bytes);
ПРОВЕРКА РАБОТЫ С ДРУГИМИ ОТВЕТАМИ:
Только что сделал быстрый тест между моим Ответом (StreamReader) (первая часть выше, копия файла) и ответом svick (FileStream / MemoryStream) (первый). Тест состоит из 1000 итераций кода, здесь приведены результаты 4 тестов (результаты в целых секундах, все фактические результаты немного превышают эти значения):
My Code | svick code
--------------------
9 | 12
9 | 14
8 | 13
8 | 14
Как вы можете видеть, по крайней мере, в моем тесте мой код работал лучше. Одна вещь, которую стоит заметить в моем случае, это то, что я не читаю поток символов, на самом деле я обращаюсь к BaseStream, который предоставляет поток байтов. Возможно, ответ Свика медленный, потому что он использует два потока для чтения, затем два для записи. Конечно, есть много способов оптимизации ответа svick для повышения производительности (и он также предоставил альтернативу для простого копирования файлов)
Тестирование с третьим вариантом (ReadAllBytes / WriteAllBytes)
My Code | svick code | 3rd
----------------------------
8 | 14 | 7
9 | 18 | 9
9 | 17 | 8
9 | 17 | 9
Примечание: в миллисекундах третий вариант всегда был лучше