Я пытаюсь как можно быстрее прочитать большой текстовый файл.Чтение большого текстового файла быстрее
- Линии, начинающиеся с '!' передаются.
- Линии с 8 CSV имеют последнее значение.
- В значении никогда не будет значения «(не нужно использовать opencsv).
- Все добавлено к длинной строке, декодированной позже.
Так что это мой код
BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\Documents\\ais_messages1.3.txt"));
String line, aisLines="", cvsSplitBy = ",";
try {
while ((line = br.readLine()) != null) {
if(line.charAt(0) == '!') {
String[] cols = line.split(cvsSplitBy);
if(cols.length>=8) {
line = "";
for(int i=0; i<cols.length-1; i++) {
if(i == cols.length-2) {
line = line + cols[i];
} else {
line = line + cols[i] + ",";
}
}
aisLines += line + "\n";
} else {
aisLines += line + "\n";
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
Так что сейчас он читает 36890 строк в 14 секунд. Я также попробовал InputStreamReader:
InputStreamReader isr = new InputStreamReader(new FileInputStream("C:\\Users\\Documents\\ais_messages1.3.txt"));
BufferedReader br = new BufferedReader(isr);
и потребовалось столько же времени. Есть ли более быстрый способ чтения большого текстового файла (100 000 или 1 000 000 строк)?
используйте 'StringBuilder' для конкатенации строк – tony200910041
Профилируйте свой код и посмотрите, где он проводит свое время прямо сейчас, а затем посмотрите, сможете ли вы ускорить работу медленных частей. – FatalError
Что должно произойти, если имеется более 8 значений? В этом случае ваш код всегда удаляет последний элемент. Неужели это так должно быть? – SpiderPig