私はいくつかのスレッドを持っています。各スレッドにはwhile(true)ループがあり、ここでサイクルごとのテキストを追加します。私は、while(true)ループをフラグで変更する良い方法が見つからないので、サイクルから出てくるときにファイルを閉じることができます。たとえば、何かを入力するときや、Eclipseの赤いボタンを押したときに、これをしたいと思います。キーボード入力でwhileループの実行を停止するにはどうしたらいいですか?
while (true) {
//write id value
String id_to_split = num+"#"+fsm.current_state.nome+"#"+tempo_minore+"#"+
fsm.current_transition.e.getId()+"#"+ fsm.current_transition.c.getId()+"#"+
fsm.current_transition.c.getFlag()+"#"+fsm.current_transition.a.getId()+"#"+
fsm.current_transition.a2.getId()+"#"+backoff;
String[] id_entries = id_to_split.split("#");
writer.writeNext(id_entries);
//write name
String label_to_split = num+"#"+fsm.current_state.nome+"#"+tempo_minore+"#"+
fsm.current_transition.e.getLabel()+"#"+fsm.current_transition.c.getLabel()+"#"+
fsm.current_transition.c.getFlag()+"#"+fsm.current_transition.a.getLabel()+"#"+
fsm.current_transition.a2.getLabel()+"#"+backoff;
String[] label_entries = label_to_split.split("#");
writer2.writeNext(label_entries);
num++;
}
closeCSVs();
}
方法closeCSVs():
これはコンストラクタである
public Node(Channel c, int address) {
my_address=address;
try {
writer = new CSVWriter(new FileWriter(my_address + "_id.csv"), ',', ' ' , ' ' ,"\n");
writer2 = new CSVWriter(new FileWriter(my_address + "_label.csv"), ',', ' ' , ' ' ,"\n");
String[] entries = "num#state#duration#event#condition#condition result#action1#action2#backoff value".split("#");
writer.writeNext(entries);
writer2.writeNext(entries);
} catch (IOException e) {
e.printStackTrace();
}
}
これは私がファイルを修正するループである(ノードはスレッドです)
public void closeCSVs() {
try {
writer.close();
writer2.close();
} catch (IOException e) {
e.printStackTrace();
}
}
で閉じたファイルを実装する必要があります。 –
ループの後にファイルを閉じ、特定の条件が満たされるたびにループを解除する方法はありますか?どのような状態が確認され、どのようにあなた次第ですか。私はまた、ファイルストリームをコンストラクタ(スレッドの?)ではなく、ループに入る前に開くこともできます。 – Thomas
あなたが望むようにコードを修正するには、変更する必要があります。 –