Я хочу использовать Java для чтения построчно из входного файла. Лог c кода должен быть:
- loadFile () в классе журнала читает первую строку. deltaRecords сохраняет первую строку
- В Main class я вызываю loadFile () , и он загружает данные только в deltaRecords , который является 1-й строкой , loadFile () ожидает, пока первая строка не будет проанализирована с помощью testRecords () в Основной класс
- loadFile () в классе log читает вторую строку. deltaRecords сохраняет вторую строку
- В Main class я вызываю loadFile () , и он только загружает данные в deltaRecords , который является 2-й строкой , loadFile () ожидает, пока 2-я строка не будет проанализирована с помощью testRecords () в Основной класс
- loadFile () в классе log читает 3-ю строку. deltaRecords хранит третью строку.
Например, мой входной файл:
TOM 1 2 <br/>
Jason 2 3 <br/>
Tommy 1 4 <br/>
После того, как я прочитал TOM 1 2. Мне нужно остановить процесс и выполнить анализ. Затем я продолжаю читать Джейсон 2. 3.
Вот мой текущий код. В классе журнала я определил loadFile () для чтения ввода построчно. В Main class я определил testRecords () для анализа .:
public void loadFile(String filename) {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(filename));
Main main = new Main();
String line = br.readLine();
int count = 0;
while (line != null) {
if (line.length() == 0) {
line = br.readLine();
continue;
}
LogRecord record = new LogRecord(line);
//add record to the deltaRecord
deltaRecords.add(record);
//here I need to wait until it has been analyzed. Then I continue read
//initial the deletaRecords and add current line to the old record
existRecords.add(record);
line = br.readLine();
}
}catch(Exception e){
System.out.println("load log file failed! ");
e.printStackTrace();
}
В моей основной функции я вызываю loadfile:
Log log = new Log();
log.loadFile("data/output_01.txt");
QueryEngine.queryEngine.log = log;
testRecord(log);
Может кто-нибудь сказать мне, как решить эту проблему? Большое спасибо.