[トピック内 4 記事 (1 - 4 表示)] << 0 >>
バイナリブロックをコピーするだけであれば、BinaryReader/BinaryWriterの出番はありません。 Streamを直接ReadしてWriteすればいいです。 典型的には以下のようなコードになります。 using (Stream src = File.Open(srcPath), dst = File.Open(dstPath)) { byte[] buffer = new byte[バッファサイズ]; int read; while ((read = src.Read(buffer, 0, buffer.Length)) > 0) { dst.Write(buffer, 0, read); } }
■No92467 (take さん) に返信 > byte[] buf = new byte[bufSize]; > while (true) > { > buf = br.ReadBytes(bufSize); BinaryReader.ReadBytes を呼ぶごとに 4MB 強の配列確保し、GC で開放されるというループのようなので、 byte[] を事前確保した FileStream.Read/Write と比較すると、相対的に遅くなる要素はありそうですね。 あと考えられるとしたら、BinaryReader/FileStream ともにメモリに一度コピーしてしまっている分、遅くなりそう。 純粋なファイルコピー処理は、やったとしてもファイルマッピングのような気もするので。
管理者用
- Child Tree -