定義したファイルタイプを表すために、ByteBufferでバイト[]にアクセスしようとしています。 byte []内の最初の位置にはいくつかのメタデータが含まれ、ビット操作で処理されます。だから彼らはまったくチャーを代表しません。ByteBufferでバイトを処理する
特定の固定位置にファイルデータ(文字など)を追加します。
byte[] file_portion
には、大きなファイルの一部である開始セクションが含まれています。これには、メタデータのヘッダーが含まれます。 content
は、そのバッファに追加したい情報のある文字列です。 start_posは、コンテンツから新しいファイルデータを保持する最初の位置です。
ByteBuffer my_content = ByteBuffer.allocate(this.file_portion.length);
content_buffer.wrap(this.file_portion);
for (int i = 0; i < content.length(); i++) {
char tmp = content.toCharArray()[i];
my_content.put(this.start_pos + i, (byte) tmp)
}
私はゴミや空要素を基底として取得し、これを再マップした場合:
CharBuffer debug = my_content.asCharBuffer();
System.out.println("debug " + debug);
を最初の位置は、破損した文字を表示する場合、私は理解でき...ではなく、単一の1つの位置は正しいです。
バグに加えて、 'content.toCharArray()[i]'は醜いので、各ループ反復で新しいchar配列を割り当てています。 char配列を外側に構築するか、 'content.charAt(i)'を使用します。 – leonbloy