1

私が作成しようとしているアプリケーションは、任意のファイルのバイナリ コードを読み取り、まったく同じバイナリ コードを使用してファイルを作成し、コピーを作成します。

ファイルを読み取って別の場所に書き込むプログラムを作成しているときに、エンコードの問題に遭遇していたので、ストレート バイナリとして読み取ることでこれを克服できるのではないかと推測しています。

アプリケーションに読み込まれるファイルは重要です。これが機能するようになった後、読み込まれるファイルのデータを検索または操作する機能を追加します。

更新: 時間を割いて回答してくれたすべての人に感謝したいと思います。現在、実用的な解決策があります。Wolfwyrd の答えはまさに私が必要としていたものでした。

4

5 に答える 5

3

BinaryReaderは、バイト バッファーへのファイルの読み取りを処理します。BinaryWriterは、これらのバイトを別のファイルにダンプする処理を行います。コードは次のようになります。

using (var binReader = new System.IO.BinaryReader(System.IO.File.OpenRead("PATHIN")))
using (var binWriter = new System.IO.BinaryWriter(System.IO.File.OpenWrite("PATHOUT")))
{
    byte[] buffer = new byte[512];
    while (binReader.Read(buffer, 0, 512) != 0)
    {
        binWriter.Write(buffer);
    }
}

ここでは、512 バイトのバッファを循環させ、すぐに他のファイルに書き出します。独自のバッファーに適切なサイズを選択する必要があります (適切なサイズであれば、ファイル全体の読み取りを妨げるものは何もありません)。パターンマッチングを行うと述べたように、ファイル全体を単一のバイト配列にロードしない場合、パターンがバッファリングされた読み取りと重なる場合を考慮する必要があります。

This SO Questionには、大きなファイルの読み取りに関するベストプラクティスの詳細が記載されています。

于 2013-06-20T15:58:56.407 に答える
1

MemoryStream と BinaryReader/BinaryWriter を見てください。

http://www.dotnetperls.com/memorystream http://msdn.microsoft.com/en-us/library/system.io.binaryreader.aspx http://msdn.microsoft.com/en-us/library/ system.io.binarywriter.aspx

于 2013-06-20T15:52:05.503 に答える