Актуальная проблема будет решена чуть ниже :), спасибо.
Я довольно новичок в 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:
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. На самом деле я не использую бота, но я хотел сделать это для упражнения.
Я могу вставить весь сценарий, если это прояснит ситуацию.
Я действительно ценю любую помощь, и, конечно, не забуду выбрать ответ, который я использовал (если кто-то не поможет;)).
Спасибо.