1

このOracleチュートリアルから直接、Javaでランダムアクセス機能を使用する方法を少し説明しています. スニペットは次のとおりです。

String s = "I was here!\n";
byte data[] = s.getBytes();
ByteBuffer out = ByteBuffer.wrap(data);

ByteBuffer copy = ByteBuffer.allocate(12);

try (FileChannel fc = (FileChannel.open(file, READ, WRITE))) {
    // Read the first 12
    // bytes of the file.
    int nread;
    do {
        nread = fc.read(copy);
    } while (nread != -1 && copy.hasRemaining());

    // Write "I was here!" at the beginning of the file.
    fc.position(0);
    while (out.hasRemaining())
        fc.write(out);
    out.rewind();

    // Move to the end of the file.  Copy the first 12 bytes to
    // the end of the file.  Then write "I was here!" again.
    long length = fc.size();
    fc.position(length-1);
    copy.flip();
    while (copy.hasRemaining())
        fc.write(copy);
    while (out.hasRemaining())
        fc.write(out);
} catch (IOException x) {
    System.out.println("I/O Exception: " + x);
}

私はこのコードを存在する場合と存在しない場合でテストしましByteBuffer copy = ByteBuffer.allocate(12);たが、結果はどちらの方法でも同じです。ByteBuffer copy = ByteBuffer.allocate(12);このスニペットで使用している人はいますか? 前もって感謝します。

4

1 に答える 1

1

コード テストの結果は、テストに使用するファイルによって異なります。ただし、ファイルが空の場合にのみ、コピー バイトバッファを使用しても使用しなくても同じ結果が得られます。

ByteBuffer コピー = ByteBuffer.allocate(12);

この行は、ファイルの内容の最初の 12 バイトまでのコピーを一時的に格納するために使用される ByteBuffer を初期化するだけです。

于 2013-05-10T14:31:29.177 に答える