0

ここに、このOracle Javaチュートリアルから取られた次のコードがあります。

// Defaults to READ
try (SeekableByteChannel sbc = Files.newByteChannel(file)) {
    ByteBuffer buf = ByteBuffer.allocate(10);

    // Read the bytes with the proper encoding for this platform.  If
    // you skip this step, you might see something that looks like
    // Chinese characters when you expect Latin-style characters.
    String encoding = System.getProperty("file.encoding");
    while (sbc.read(buf) > 0) {
        buf.rewind();
        System.out.print(Charset.forName(encoding).decode(buf));
        buf.flip();//LINE X
    }
} catch (IOException x) {
    System.out.println("caught exception: " + x);

したがって、基本的に出力は得られません。whileループにいくつかのフラグを入れて、入るかどうかを確認しようとしましたが、入っています。Charset.defaultCharset().decode(buf)また、 , result : no outputのエンコーディングも変更しました。もちろん、渡されたファイルにはテキストがありますnewByteChannel(file);

何か案が?よろしくお願いします。

**

編集:

** 解決しました。以前に誤って破損していたのは、アクセスしようとしていたファイルだけでした。ファイルを変更した後、すべてが機能しています。

4

1 に答える 1

1

コードが間違っているようです。rewind()toflip(),flip()toを変えてみてくださいcompact().

于 2013-05-09T16:28:49.847 に答える