Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Чтение txt-файла по строкам / 6 сообщений из 6, страница 1 из 1
19.12.2013, 17:38:54
    #38506950
NDAleksey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение txt-файла по строкам
Доброго времени суток. Есть код:

Код: java
1.
2.
3.
4.
5.
6.
7.
final String FILE_NAME = "d:\\CSV_Files\\test1.txt";
Reader reader = new FileReader( new File( FILE_NAME ) );
BufferedReader bufferedReader = new BufferedReader( reader );
String line;

while ( ( line = bufferedReader.readLine() ) != null )
	System.out.println( line );



Читает файл по строкам. Но как обойтись без BufferReader-а, чтобы весь файл в память не грузить?
...
Рейтинг: 0 / 0
19.12.2013, 17:43:54
    #38506964
_newcomer_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение txt-файла по строкам
NDAlekseyНо как обойтись без BufferReader-а, чтобы весь файл в память не грузить?
Что в вашем понимании "весь" и почему вам не нравится несколько килобайт данных в памяти?
...
Рейтинг: 0 / 0
19.12.2013, 17:48:31
    #38506974
NDAleksey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение txt-файла по строкам
_newcomer_NDAlekseyНо как обойтись без BufferReader-а, чтобы весь файл в память не грузить?
Что в вашем понимании "весь" и почему вам не нравится несколько килобайт данных в памяти?

Код: java
1.
BufferedReader bufferedReader = new BufferedReader( reader );



Что выполняет эта инструкция? почему - файл может быть огромный (условие ТЗ)
...
Рейтинг: 0 / 0
19.12.2013, 18:00:38
    #38506993
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение txt-файла по строкам
BufferedReader не грузит весь файл в память. Только одну строку. Если у вас строки длинной в мегабайты, то тогда да - лучше вместо строк читать меньшими порциями.
...
Рейтинг: 0 / 0
19.12.2013, 18:13:26
    #38507006
NDAleksey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение txt-файла по строкам
BlazkowiczBufferedReader не грузит весь файл в память. Только одну строку. Если у вас строки длинной в мегабайты, то тогда да - лучше вместо строк читать меньшими порциями.

т.е. если я Вас правильно понимаю, "килобайтная" строка грузится через 512 байтный буфер:
Код: java
1.
BufferedReader bufferedReader = new BufferedReader( reader, 512 );


так?
...
Рейтинг: 0 / 0
19.12.2013, 18:19:05
    #38507013
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение txt-файла по строкам
NDAleksey,

Ну, примерно так.

Из InputStream можно читать либо посимвольно, либо через блоками через byte[].
Чтение через byte[] усложняет код. Зачастую обрабатывать код посимвольно намного проще.
Но посимвольное чтение, например из FileInputStream, очень сильно бъет по производительности.
BufferedInputStream прячет от клиентского кода детали работы с byte[] буфером, но позволяет читать посимвольно без потери производительности.

Reader это аналог InputStream для чтения данных. Соответсвенно BufferedReader реализует почти такую же оптимизацию, только для "символьного" потока.

Это всё очевидно, если просто заглянуть в исходый код используемых классов.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Чтение txt-файла по строкам / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]