次のように、JNotify を実装して、新しいファイルが特定のディレクトリにいつ到着したかを判断し、ファイルが到着したときにファイル名を別の関数に送信します。
public class FileDetector {
MessageProcessor mp;
class Listener implements JNotifyListener {
public void fileCreated(int wd, String rootPath, String name) {
print("created " + rootPath + " : " + name);
mp.processMessage(rootPath + "\\" + name);
}
}
}
関数 mp.processMessage はファイルを開こうとしますが、ファイルが別のプロセスによって使用されているというエラーが表示され続けます。ただし、ファイルは作成されたばかりなので、それを使用している可能性がある他のプロセスは JNotify だけです。
いくつかの print ステートメントを入れたところ、関数 mp.processMessage がリスナーの print 関数の前に呼び出されているように見えます。メッセージ処理全体をリスナークラス内に配置する以外に、これを解決する方法について誰か提案がありますか?