什么是BufferedReader的readLine()方法的更快替代方法?

时间:2018-10-18 03:01:09

标签: java performance io bufferedreader bufferedinputstream

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是否对我有帮助。

为此,速度是最重要的!

0 个答案:

没有答案