如何从任何文件读取原始字节数组,并将该字节数组写回到新文件中?

有帮助吗?

解决方案

(编辑:请注意,问题发生了变化;它没有提到 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);

你知道吗 文本阅读器文本编写器, ,以及他们的后代 流阅读器流写入器?我认为这些将解决您的问题,因为它们处理编码,BinaryReader 不知道编码甚至文本,它只关心字节。

如何从文件中读取文本

如何将文本写入文件

这是对文件 IO 和编码的精彩介绍。

添加一个最新的答案,

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应用程序这将是有益的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top