views:

897

answers:

3

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

+2  A: 

(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);
        }
    }
Marc Gravell
+4  A: 

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.

Dale Halliwell
Jeremy asked about reading and writing BINARY files, didn't he?
pavium
If it is just binary data, then why is there any problem with the char encoding?
Dale Halliwell
+4  A: 
byte[] data = File.ReadAllBytes(path1);
File.WriteAllBytes(path2, data);
Tommy Carlier
Note that for large files that could be *very* expensive.
Marc Gravell