Вопрос

Как мне прочитать необработанный массив байтов из любого файла и записать этот массив байтов обратно в новый файл?

Это было полезно?

Решение

(редактировать:обратите внимание, что вопрос изменился;там не упоминалось byte[] изначально;видеть редакция 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);
        }
    }

Другие советы

byte[] data = File.ReadAllBytes(path1);
File.WriteAllBytes(path2, data);

Ты знаешь о TextReader и TextWriter, и их потомки StreamReader и StreamWriter?Я думаю, что это решит вашу проблему, потому что они обрабатывают кодировки, BinaryReader не знает ни о кодировках, ни даже о тексте, он касается только байтов.

Как прочитать текст из файла

Как записать текст в файл

Это отличное введение в файловый ввод-вывод и кодировки.

Добавление актуального ответа,

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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top