readLine()
返回一个字符串,但我需要的是每一行中每个字符串的字符中的ASCII
个字符。
例如
ABCDE XYZ
我需要分别为A,B,C,D,E以及X,Y,Z的ASCII字符。当前,我正在使用BufferedReader
的{{1}}方法,然后遍历字符串的长度,并使用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();
}
的{{1}}方法要慢。
我找到了这个答案:Why is the performance of BufferedReader so much worse than BufferedInputStream?,我想知道BufferedReader
是否对我有帮助。
为此,速度是最重要的!