C# - How do I read and write a binary file?

前端 未结 4 1464
不知归路
不知归路 2020-12-11 02:39

How do I read a raw byte array from any file, and write that byte array back into a new file?

相关标签:
4条回答
  • 2020-12-11 03:06
    byte[] data = File.ReadAllBytes(path1);
    File.WriteAllBytes(path2, data);
    
    0 讨论(0)
  • 2020-12-11 03:12

    Do you know about TextReader and TextWriter, and their descendents StreamReader and StreamWriter? I think these will solve your problem because they handle encodings, BinaryReader does not know about encodings or even text, it is only concerned with bytes.

    How to read text from a file

    How to write text to a file

    This is an excellent intro to file IO and encodings.

    0 讨论(0)
  • 2020-12-11 03:16

    (edit: note that the question changed; it didn't mention byte[] initially; see revision 1)

    Well, File.Copy leaps to mind; but otherwise this sounds like a Stream scenario:

        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);
            }
        }
    
    0 讨论(0)
  • 2020-12-11 03:24

    Adding an up to date answer,

    using (var source = File.OpenRead(inPath))
    {
        using (var dest = File.Create(outPath))
        {
            source.CopyTo(dest);
        }
    }
    

    you can optionally specify the buffer size

    using (var source = File.OpenRead(inPath))
    {
        using (var dest = File.Create(outPath))
        {
            source.CopyTo(dest, 2048); // or something bigger.
        }
    }
    

    or you could perform the operation on another thread,

    using (var source = File.OpenRead(inPath))
    {
        using (var dest = File.Create(outPath))
        {
            await source.CopyToAsync(dest);
        }
    }
    

    which would be useful when the main thread has to do other work, like with WPF and Windows Store apps.

    0 讨论(0)
提交回复
热议问题