Mam następujący kod:Odczytywanie pliku ASCII z FileChannel i ByteArrays
String inputFile = "somefile.txt";
FileInputStream in = new FileInputStream(inputFile);
FileChannel ch = in.getChannel();
ByteBuffer buf = ByteBuffer.allocateDirect(BUFSIZE); // BUFSIZE = 256
/* read the file into a buffer, 256 bytes at a time */
int rd;
while ((rd = ch.read(buf)) != -1) {
buf.rewind();
for (int i = 0; i < rd/2; i++) {
/* print each character */
System.out.print(buf.getChar());
}
buf.clear();
}
Ale znaki uzyskać wyświetlane w 's. Czy ma to coś wspólnego z Javą używającą znaków Unicode? Jak mogę to poprawić?
Jeśli chcesz uniknąć drukowania każdego znaku osobno, możesz po prostu użyć 'buf.flip()' zamiast 'buf.rewind()' i przekazać cały chbuf do 'System.out.print()' – hertzsprung