在网上找了很多有关java监听文件修改的资料,很多都做得太复杂了;而且用到本地都有问题。这里自己写一个简单的监听文件修改的方法,代码如下: [java] view plaincopyprint? 01.package com.yunho.rule; 02. 03.import java.text.SimpleDateFormat; 04.import java.util.*; 05.import java.io.File; 06.import java.io.IOException; 07. 08.public class FileListener{ 09. /** 10. * A facility for threads to schedule tasks for future execution in a background thread. 11. * Tasks may be scheduled for one-time execution, or for repeated execution at regular intervals. 12. * */ 13. private Timer timer; 14. 15. /** 16. * current time 17. * */ 18. private long currentTime=-1; 19. 20. /** 21. * last Modified Time 22. * */ 23. private long lastModifiedTime=-1; 24. 25. /** 26. * 分钟 27. * */ 28. private long times=1; 29. 30. /** 31. * time 32. * */ 33. private long pollingInterval=1000 * times; 34. 35. /** 36. * file path 37. * */ 38. private String filePath="src/com/yunho/rule/rule.xml"; 39. 40. public FileListener() { 41. File file=new File(filePath); 42. lastModifiedTime=file.lastModified(); 43. currentTime=lastModifiedTime; 44. } 45. 46. public static void main(String[] args) { 47. FileListener fileListener=new FileListener(); 48. fileListener.timer = new Timer(true); 49. fileListener.start(); 50. } 51. 52. public void start(){ 53. timer.schedule(new FileMonitor(), 0, pollingInterval); 54. while (true) { 55. try { 56. int ch = System.in.read(); 57. System.out.println("ch = "+ch); 58. if (ch - 'c' == 0) { 59. System.out.println("QUIT"); 60. timer.cancel(); 61. break; 62. } 63. } catch (IOException e) { 64. e.printStackTrace(); 65. } 66. } 67. } 68. 69. private class FileMonitor extends TimerTask { 70. public void run() { 71. File file = new File(filePath); 72. lastModifiedTime = file.exists() ? file.lastModified() : -1; 73. if (currentTime != lastModifiedTime) { 74. System.out.println(" File [ " + file.getName() + " ] changed At: " 75. + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS")。format(lastModifiedTime)); 76. currentTime = lastModifiedTime; 77. } 78. } 79. } 80.} |