2016-09-18 6 views
-2

Ищите лучшую практику для чтения файла по строке, которая имеет> 10 записей и хранит их в ArrayList.Java: Как читать огромные записи (> 10k)

Моя программа была в состоянии прочитать записи 3,5 тыс. И игнорировать остальные записи.

URL cityurl = ClassLoader.getSystemResource(citypath); 
citybr = new BufferedReader(new FileReader(cityurl.getFile())); 
for (String city = citybr.readLine(); city != null; city = citybr.readLine()) { 
    citycountryairport.add(citybr.readLine()); 
} 

Заранее благодарен!

+0

Возможно, вам будет полезно узнать, что вам не нравится в вашем текущем решении. У вас заканчивается память? Что-то другое? – mangotang

+2

Возможный дубликат [Прочитать большие файлы на Java] (http://stackoverflow.com/questions/2356137/read-large-files-in-java) –

+0

Подсказка: прочитайте о соглашениях об именах java. Переменные go camelCase! – GhostCat

ответ

1

BufferedReader - хороший выбор для чтения больших файлов, поскольку он буферизует файл и, таким образом, позволяет избежать загрузки всего файла в память, см. BufferedReader Doc.

Каждый раз, когда вы звоните

readLine(); 

Следующая строка файла считывается в вашем изменении кода:

citycountryairport.add(citybr.readLine()); 

к:

citycountryairport.add(city); 

иначе линий считанных строка

city = citybr.readLine() 

не будет добавлен в ваш список, потому что вы никогда не добавите String город в свой список.

+0

Немного больше объяснений может быть хорошим, но очень приятным наблюдением, и добро пожаловать в StackOverflow. – Andreas

+0

Спасибо! Я сделал некоторые изменения, надеюсь, что OP понимает – Mwanza

+0

@Mwanza. Мой код не бросает никаких исключений, но он печатает нуль и игнорирует остальную часть записей, если я использую метод readLine(). Но ваше предложение отлично работает! почему это происходит с прямым подходом? немного больше объяснений будет хорошо. Спасибо!! – venkatVJ