Java - сравнение строки в ArrayList со всем текстом в файле .txt

Настоящая проблема будет рассмотрена чуть ниже :), спасибо.

Я новичок в Java (почти прочитал книгу на 400 страниц).

Я еще не очень хорошо знаком с API.

Это мой лучший способ прочитать файл .txt и проверить, есть ли какие-либо собранные данные, которые уже хранятся в файле .txt. В этом случае данные будут удалены из коллекции данных, а данные, которых еще нет в .txt, будут добавлены.

Некоторые переменные:

public String[] names;
public int[] levels;
public int[] IDs;

public ArrayList<String> line = new ArrayList<String>();
public ArrayList<RSNPC> monsterList = new ArrayList<RSNPC>();
public ArrayList<String> monstersToAdd = new ArrayList<String>();

Метод, который проверяет существующий .txt file:

    private void checkForLine() {
     try{
         // Create file 
        File file = new File(getCacheDirectory() + "output.txt");
        RandomAccessFile out = new RandomAccessFile(file, "rw");
        for(int i = 0; i < file.length(); i++){
            line.add(out.readLine());
        }
        for(String monster : monstersToAdd){    
            if(line.contains(monster)){
                monstersToAdd.remove(monster);
            }
        }
        //Close the output stream
        out.close();
     }catch (Exception e){//Catch exception if any
         System.err.println("Error: " + e.getMessage());
         }
     }

Метод, который затем, наконец, сохраняет информацию, определенную функцией checkForLine () (ту, которая уже отсутствует в файле):

private void saveToFile() {
     try{
         // Create file 
        BufferedWriter out = new BufferedWriter(new FileWriter(getCacheDirectory() + "output.txt"));
        for(String a : monstersToAdd){
            out.write(a);
            out.newLine();
            log("Wrote " + a + "to file");
        }
         //Close the output stream
         out.close();
         }catch (Exception e){//Catch exception if any
         System.err.println("Error: " + e.getMessage());
         }
     }

Порядок выполнения:

        getNPCS();
    getNames(monsterList);
    getLevels(monsterList);
    getIDs(monsterList);
    combineInfo();
    checkForLine();
    saveToFile();

Проблема , однако, заключается в том, что он неправильно проверяет информацию в файле .txt. Я вижу это, потому что он просто сохраняет все, что наблюдает снова и снова, не сортируя ничего. Это был единственный способ, о котором я мог думать с моими ограниченными знаниями, и он не работал.

Для тех, кому интересно: Это сценарий для бота под названием RSbot, который играет в игру под названием RuneScape. Я вообще-то не использую бот, но я хотел сделать это для упражнения.

Я могу вставить весь сценарий, если это еще больше прояснит ситуацию.

Я очень благодарен за любую помощь и, конечно, не забуду выбрать ответ, который я использовал (если кто-то потрудится помочь;)).

Спасибо.

5
задан Mike Haye 15 June 2011 в 19:26
поделиться