実際の問題はもう少し下で対処されます:)、ありがとう。
私は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ファイルの情報を正しくチェックしないことです。何もソートせずに、何度も何度も観察したものを保存するだけなので、それがわかります。これは私の限られた知識で考えることができる唯一の方法であり、それはうまくいきませんでした。
疑問に思っている人のために:これは、RuneScapeと呼ばれるゲームをプレイするRSbotと呼ばれるボットのスクリプトです。私は実際にはボットを使用していませんが、演習のためにこれを使用したかったのです。
それでさらに問題が解決する場合は、スクリプト全体を貼り付けることができます。
私は本当にどんな助けにも感謝します、そしてもちろん私が使った答えを選ぶことを忘れないでしょう(誰かが助けてくれるのをわざわざするなら;))。
ありがとう。