LINUX.ORG.RU

История изменений

Исправление Legioner, (текущая версия) :

Во-первых, твой код не закрывает файл, если выбрасывается исключение.

Во-вторых он некорректно читает файл. readLine() читает строки с любыми окончаниями: \n, \r, \n\r. Твой код всё это преобразует в \n, т.е. портит исходный текст.

В-третьих он потенциально потребляет больше памяти, когда в файле много длинных строк.

В-четвёртых BufferedReader.readLine использует внутри себя StringBuffer. У этого класса все операции защищены локами, поэтому они могут выполняться дольше аналогичных в StringBuilder-е. В теории JVM может проигнорировать эти локи, но как на практике она себя ведёт, я не знаю.

Исходная версия Legioner, :

Во-первых, твой код не закрывает файл, если выбрасывается исключение.

Во-вторых он некорректно читает файл. readLine() читает строки с любыми окончаниями: \n, \r, \n\r. Твой код всё это преобразует в \n, т.е. портит исходный текст.

В-третьих он потенциально потребляет больше памяти, когда в файле много длинных строк.