readLine()
возвращает строку, но мне нужны ASCII
символы символов каждой строки в каждой строке.
Например
ABCDE XYZ
Мне нужны символы ASCII A, B, C, D, E, а также X, Y, Z, но отдельно.В настоящее время я использую метод BufferedReader
readLine
, затем перебираю длину строки и использую String.charAt()
для получения символа в каждой позиции.Затем легко преобразовать символы в байты.
Я подумал, что создание строк из байтов должно быть дорогим, а затем преобразование обратно в байты.Я пытался написать свое собственное решение, используя FileChannel
:
FileChannel f = FileChannel.open(Paths.get("file.txt"));
ByteBuffer buffer = ByteBuffer.allocate(10000);
bytesRead = 0;
byte[] chunk = new byte[10000];
while (bytesRead != -1) {
bytesRead = f.read(buffer);
buffer.flip();
while (buffer.hasRemaining()) {
buffer.get(chunk, 0, bytesRead);
processChunk(chunk);
}
buffer.clear();
}
Я не знаю почему, но оказалось, что это медленнее, чем BufferedReader
readLine()
метод.
Я нашел ответ: Почему производительность BufferedReader намного хуже, чем BufferedInputStream? , и мне было интересно, может ли BufferedInputStream
помочь мне.
Скорость имеет первостепенное значение для этого!