How do I read a raw byte array from any file, and write that byte array back into a new file?
问题:
回答1:
(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);
}
}
回答2:
byte[] data = File.ReadAllBytes(path1);
File.WriteAllBytes(path2, data);
回答3:
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.
回答4:
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.