C#-方法の読み書きるバイナリファイルとは何ですか?
-
11-09-2019 - |
質問
方法を読んで原バイト配列からファイルに書きるバイト配列に戻すファイルを保存し、新規ファイル?
解決
(編集:質問が変更されたことを注意してください。それが最初にbyte[]
は言及しなかった。参照<のhref =「https://stackoverflow.com/revisions/2e2ffb6b-b944-4c97-8400-5965f97863f9/view-source」 >リビジョン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ストアのアプリと同じように、他の作業を行う必要があるときに有用であろう。
所属していません StackOverflow