Я очень сомневаюсь, что BufferedReader
приведет к значительным накладным расходам.Добавление собственного кода, вероятно, будет по меньшей мере столь же неэффективным, а также, возможно, и неправильным.
Например, в коде, который вы дали, вы вызываете new String(bytes)
, который всегда будет создаватьстрока из 1024 байтов, использующая кодировку платформы по умолчанию ... не очень хорошая идея.Конечно, вы очищаете массив впоследствии, но ваши строки по-прежнему будут содержать набор символов '\ 0' - что означает много потерянного пространства, кроме всего остального.Вы должны по крайней мере ограничить часть байтового массива, из которого создается строка (это также означает, что вам не нужно очищать массив впоследствии).
У вас на самом деле пробовал с использованием BufferedReader
и обнаружил, что он слишком медленный?Обычно вы должны написать самый простой код, который сначала будет соответствовать вашим целям, а затем проверить, достаточно ли он быстр ... особенно, если ваша единственная причина не делать этого - неуказанный ресурс, который вы "читаете в Интернете".Вы хотите, чтобы я нашел сотни примеров, когда люди высказывали неверные предложения по производительности?:)
В качестве альтернативы вы можете посмотреть на перегрузку Guava Files.readLines()
, которая принимает LineProcessor
.