Как читать исходный массив байтов из любого файла и записывать этот массив байтов в новый файл?C# - Как читать и писать двоичный файл?
ответ
(редактирование: обратите внимание, что вопрос изменился, это не говоря уже о byte[]
изначально, см revision 1)
Ну, File.Copy
прыжков на ум; но в остальном это звучит как Stream
сценария:
using (Stream source = File.OpenRead(inPath))
using (Stream dest = File.Create(outPath)) {
byte[] buffer = new byte[2048]; // pick size
int bytesRead;
while((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0) {
dest.Write(buffer, 0, bytesRead);
}
}
вы знаете о TextReader и TextWriter ли, и их потомки StreamReader и StreamWriter? Я думаю, что это решит вашу проблему, потому что они обрабатывают кодировки, BinaryReader не знает о кодировках или даже тексте, он касается только байтов.
Джереми спросил о чтении и записи файлов BINARY, не так ли? – pavium
Если это всего лишь двоичные данные, тогда почему возникает проблема с кодировкой символов? –
byte[] data = File.ReadAllBytes(path1);
File.WriteAllBytes(path2, data);
Обратите внимание, что для больших файлов, которые могут быть очень дорогими. –
Добавление до даты ответа,
using (var source = File.OpenRead(inPath))
{
using (var dest = File.Create(outPath))
{
source.CopyTo(dest);
}
}
вы можете дополнительно указать размер буфера
using (var source = File.OpenRead(inPath))
{
using (var dest = File.Create(outPath))
{
source.CopyTo(dest, 2048); // or something bigger.
}
}
или вы могли бы выполнить операцию в другом потоке,
using (var source = File.OpenRead(inPath))
{
using (var dest = File.Create(outPath))
{
await source.CopyToAsync(dest);
}
}
, которые были бы полезны, когда основной поток должен делать другую работу, как с WPF и приложений для Windows Store.
Кодировка & BinaryWriter? Кодирование - это «строка». У вас не должно быть проблем, когда вы имеете дело с двоичными данными. –
Джереми, вы имеете в виду «в зависимости от типа файла * формат * меняется ...»? если используемый вами код пытается читать/записывать файлы с неправильным типом/форматом файла, я уверен, что будет коррупция. – pavium
Чтение файла как 'byte []' не обязательно является хорошей идеей; это может быть ** очень ** дорогостоящим для больших файлов. –