Oracle代码段不会返回结果

时间:2013-05-09 16:08:38

标签: java io nio

这里我从this 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)中的编码,结果:没有输出。 当然,文件中的文本传递给newByteChannel(file);

有什么想法吗? 非常感谢。

**

编辑:

**解决了,这只是我试图访问的文件,以前曾被意外损坏。更改文件后,一切正常。

1 个答案:

答案 0 :(得分:1)

代码看起来不对。尝试将rewind()更改为flip(),,将flip()更改为compact().