Czy możesz pokazać prosty przykład do odczytania z pliku o nazwie example.txt i umieścić całą zawartość w łańcuchu w moim programie Java za pomocą java NIO?

Oto, czego używam w tej chwili:

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();
    }
}
0
JayJona 11 listopad 2018, 16:09

1 odpowiedź

Najlepsza odpowiedź

Spróbuj tego:

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

Mógłbyś obejść się bez bufora pośrednika ca, jeśli pisanie char przez char jest akceptowalne pod względem wydajności. W takim przypadku możesz po prostu sb.append(cb.get()).

0
MeetTitan 11 listopad 2018, 22:38