Читать из FileChannel с помощью Java Java - PullRequest
0 голосов
/ 11 ноября 2018

Можете ли вы показать мне простой пример для чтения из файла с именем example.txt и поместить все содержимое в строку в моей java-программе, используя java NIO ?

Вот что я сейчас использую:

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 голосов
/ 11 ноября 2018

Попробуйте это:

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();
}

Вы можете обойтись без буфера среднего человека ca, если запись char на char приемлема с точки зрения производительности. В этом случае вы можете просто sb.append(cb.get()).

...