2016-06-15 3 views
1

У меня есть очень большой текстовый файл (около 8,5 миллионов строк, 1 ГБ), который составлен из географической информации (проект Geoname, для тех, кто слышал об этом). В настоящее время я использую BufferedReader и обнаружил, что моя программа может удобно читать 10000 строк и отображать некоторые требуемые данные без большой паузы. Тем не менее, я должен читать и искать каждую строку во всем файле, и как только я тестирую его с более чем 50000 строк, программа становится очень медленной и в основном бесполезной. Каковы некоторые опции для деления файла и чтения его в кусках, что сокращает время выполнения?Чтение большого текстового файла в кусках Обработка

+1

Почему вы думаете, что разделение файла поможет, если вам все равно нужно пройти через каждую строку? 'BufferedReader' уже выполняет« chunking »(отсюда и название« Buffered »), поэтому, если что-либо, деление файла будет * медленнее *, поскольку вам придется работать с несколькими файлами, а не с одним. – Kayaman

+0

http://www.baeldung.com/java-read-lines-large-file – Fildor

+0

Я согласен с тем, что сказал Kayaman. 'BufferedReader' уже читает в кусках. Похоже, вы сталкиваетесь с проблемой памяти. Вы пытались просто увеличить объем доступной памяти? Если это не сработает, напишите [mcve], чтобы мы могли точно видеть, что происходит. –

ответ

-1

Подробнее о классе java.nio.Buffer и его подклассах. Особенно обратите внимание на правильные и непрямые буферы и плюсы и минусы их использования. Прямые буферы обеспечивают прямой доступ к диску и возможность обработки очень больших файлов в кусках и очень быстро. Но эта отличная способность связана с некоторой ценой и риском утечки памяти. Но я думаю, что это то, что вам может понадобиться. Начните читать здесь: https://docs.oracle.com/javase/8/docs/api/java/nio/Buffer.html

Смежные вопросы