|
|
|
Постраничное чтение большого файла. Использование BufferedInputStream
|
|||
|---|---|---|---|
|
#18+
Есть задача: читать текстовый файл произвольного размера постранично. Страница произвольного размера от 5 до 10000 символов (именно символов, НЕ строк) Решил воспользоваться BufferedInputStream. Есть произвольный файл c содержимым: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Есть код: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Т.е. я хочу считывать в байтовый массив размера size страницу и потом выводить ее. При выполнении кода выше получается вывод в консоль: jkpopopopo Я совсем не могу понять принцип по которому происходит вывод, т.к. выводятся последние 10 символов и при этом даже не по порядку считывания и помещения в массив. Или я неправильно использую BufferedInputStream или неправильно понимаю работу конструкции: Код: java 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2018, 12:55 |
|
||
|
Постраничное чтение большого файла. Использование BufferedInputStream
|
|||
|---|---|---|---|
|
#18+
1. Если вам нужны символы, а не байты, то лучше сразу брать Reader/Writer вместо InputStream/OutputStream 2. Да. Вы совсем не понимаете работу конструкции. 3. Если вы хотите читать частями, то при использовании BufferedReader или BufferedInputStream, у вас выйдет двойная буферизация. Не то что бы это плохо. Просто как-то бесполезно. 4. Загляните в Apache Commons IO Utils, вдруг что полезное найдете ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2018, 13:06 |
|
||
|
Постраничное чтение большого файла. Использование BufferedInputStream
|
|||
|---|---|---|---|
|
#18+
1. Ок. 2. Поясните плз. Я понимаю while((x = in.read(byteArr, 0, size)) != -1) {} так: читаем побайтово из потока size байт и записываем в байтовый массив byteArr с позиции 0. 3. Ок. 4. Нужны стандартные средства Java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2018, 14:42 |
|
||
|
Постраничное чтение большого файла. Использование BufferedInputStream
|
|||
|---|---|---|---|
|
#18+
Warl0ck_01, Нет, он не читает "побайтово", он читает столько сколько может прочитать и поместить в буфер. Ваш цикл читает "побуферно" до конца файла. Вы перепутали два разных read() метода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2018, 14:44 |
|
||
|
Постраничное чтение большого файла. Использование BufferedInputStream
|
|||
|---|---|---|---|
|
#18+
Но ведь он читает из буфера байты? Вот я выполнил следующий код: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Получил вывод: Код: java 1. Объясните плз, почему такой вывод? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2018, 17:48 |
|
||
|
Постраничное чтение большого файла. Использование BufferedInputStream
|
|||
|---|---|---|---|
|
#18+
Warl0ck_01Но ведь он читает из буфера байты? Нет. Он читает байты из потока в буфер. byteArr это ваш буфер. Вы не пробовали документацию почитать к методу read()? Warl0ck_01Объясните плз, почему такой вывод? Потому что вы не прочитали в документации что возвращает метод read() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2018, 17:51 |
|
||
|
Постраничное чтение большого файла. Использование BufferedInputStream
|
|||
|---|---|---|---|
|
#18+
Warl0ck_01Получил вывод: Код: java 1. Объясните плз, почему такой вывод? У меня вот другой вывод. pojkpopopo ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 15:38 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39611987&tid=2122191]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
194ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 16ms |
| total: | 299ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...