質問: たびたびすみません。 ファイルの中身が更新(書き込み)されたら、 その中身を読みに行くというプログラムを作成しているのですが、まずファイルの更新を検出できなくて困っております。 特定のテキストファイル1つだけの更新を見張るコトができればよいのですが。。。。 何かよい方法とかあればご教授お願いいたします。 javaのバージョンは1.5.0_10です。
回答: import java.io.File; import java.util.Map; import java.util.HashMap; /** * ファイルの更新をチェックする */ public class FileLastModified{ protected Map fLastModifieds; private static boolean fStop; public void start(){ fLastModifieds = new HashMap(); Thread thread = new Thread(new Checker()); thread.start(); } public void stop(){ fStop = true; } protected void check(){ //監視するファイル File file = new File("Sample.txt"); Long lastModified = (Long) fLastModifieds.get(file); //最終更新日時の取得 long mtime = file.lastModified(); //ファイル更新検出 if(lastModified == null){ fLastModifieds.put(file,new Long(mtime)); } else if(lastModified.longValue() < mtime){ fLastModifieds.put(file,new Long(mtime)); //ファイルが更新された時に実行する処理 Test test = new Test(); test.main(); } } //whileがtrueな限りcheck()を実行する。 protected class Checker implements Runnable{ public void run(){ while (!fStop){ try{ Thread.sleep(500L); }catch(InterruptedException e){} check(); } } } } として、クライアント側↓で実行しました。 public class Client{ public static void main(String[] args) { FileLastModified modified = new FileLastModified(); modified.start(); } } ここでたくさんのヒントを頂き何とか動くようになりました。 本当にありがとうございました!! プログラムとしてはぐちゃぐちゃっぽいですけど・・・。 これからキレイなプログラムとかも書けるように頑張っていきますので、また何かありましたがよろしくお願いします。