使用java nio从FileChannel中读取

时间:2018-11-11 13:09:14

标签: java string io nio java-io

能否给我展示一个简单的示例,以使用 java NIO 从名为 example.txt 的文件读取并将所有内容放入Java程序的字符串中? >

以下是我目前正在使用的内容:

FileChannel inChannel = FileChannel.open(Paths.get(file),StandardOpenOption.READ);
CharBuffer buf=ByteBuffer.allocate(1024).asCharBuffer();
while(inChannel.read(buf)!=-1) {
    buf.flip();
    while(buf.hasRemaining()) {
        //append to a String
        buf.clear();
    }
}

1 个答案:

答案 0 :(得分:0)

尝试一下:

public static String readFile(File f, int bufSize) {
    ReadableByteChannel rbc = FileChannel.open(Paths.get(f),StandardOpenOption.READ);
    char[] ca = new char[bufSize];
    ByteBuffer bb = ByteBuffer.allocate(bufSize);
    StringBuilder sb = new StringBuilder();
    while(rbc.read(bb) > -1) {
        CharBuffer cb = bb.asCharBuffer();
        cb.flip();
        cb.get(ca);
        sb.append(ca);
        cb.clear();
    }
    return sb.toString();
}

如果逐个字符写入char在性能上可以接受,则可以不使用中间人缓冲区ca。在这种情况下,您可以简单地sb.append(cb.get())