国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
JAVA TimerTask之監(jiān)聽文件夾
JAVA TimerTask之監(jiān)聽文件夾
 

    利用TimerTask,當(dāng)web容器加載的時候初始化文件夾下的文件列表,賦給list1,當(dāng)時鐘進行第二次監(jiān)聽的時候在讀出文件夾下的文件列表賦給list2,如果list2大于list1,則說明有新文件加入,然后通過文件的修改時間和web容器加載時的系統(tǒng)時間對比來判斷是那個文件被添加進來了,從而完成了對文件夾的監(jiān)聽!具體代碼如下:

PropertiesListener.java

/**
* 文件夾自動監(jiān)聽器
* @author litao
*
*/
public class PropertiesListener implements ServletContextListener {
   
    /**
     * 自動監(jiān)聽時鐘
     */
    private final Timer timer = new Timer();
   
    /**
     * 時鐘間隔周期
     */
    private final int sec = 1000*60;  
   
    /**
     * 啟動服務(wù)后多久開始進行監(jiān)聽
     */
    private final int sec_start = 1000*30;  
   
    /**
     * 監(jiān)聽文件夾所在地址
     */
    private final String path = "D:\\test\\";
   
   
public void contextInitialized(ServletContextEvent event) {
   String status = "文件夾定時監(jiān)聽啟動.";
   event.getServletContext().log(status);
  
        // 執(zhí)行自動監(jiān)聽計劃
        timer.schedule(new PropertiesTask(path), sec_start, sec);
    }
   
    public void contextDestroyed(ServletContextEvent event) {
        String status = "文件夾定時監(jiān)聽停止 .";
        event.getServletContext().log(status);
       
        // 停止自動監(jiān)聽時鐘
        timer.cancel();
    }
}

PropertiesTask .java

/**
* 自動監(jiān)聽任務(wù)
*
* @author litao
*
*/

@SuppressWarnings("unchecked")
public class PropertiesTask extends TimerTask {
private String path;
private File files;
private String[] list1;
private long lastModified;

/**
* 構(gòu)造一個自動更新任務(wù)
*
* @param context
*/
public PropertiesTask(String path) {
   this.path = path;
   this.lastModified = System.currentTimeMillis();
   this.files = new File(path);
   if (files.isDirectory()) {
    this.list1 = files.list();
   }
}

public void run() {
   todo();
}

/**
* 監(jiān)聽文件夾下的文件是否被更新。
*/
private void todo() {
   if (files.isDirectory()) {
    String[] list2 = files.list();
    if (list1.length < list2.length) {
     for (int i = 0; i < list2.length; i++) {
      File file = new File(path + list2[i]);
      while (isFileUpdated(file)) {
       System.out.println(list2[i]+" 文件被更新");
       break;
      }
     }
     list1 = files.list();
    } else {
     list1 = files.list();
    }
   }else{
    System.out.println("************所監(jiān)聽的文件夾路徑- "+path+" -不存在***********");
   }
}

/**
* 判斷物理文件是否已被更新
*
* @param filename
*            物理文件名
* @return 是

JAVA TimerTask之監(jiān)聽文件夾
2009-11-03 10:36

    利用TimerTask,當(dāng)web容器加載的時候初始化文件夾下的文件列表,賦給list1,當(dāng)時鐘進行第二次監(jiān)聽的時候在讀出文件夾下的文件列表賦給list2,如果list2大于list1,則說明有新文件加入,然后通過文件的修改時間和web容器加載時的系統(tǒng)時間對比來判斷是那個文件被添加進來了,從而完成了對文件夾的監(jiān)聽!具體代碼如下:

PropertiesListener.java

/**
* 文件夾自動監(jiān)聽器
* @author litao
*
*/
public class PropertiesListener implements ServletContextListener {
   
    /**
     * 自動監(jiān)聽時鐘
     */
    private final Timer timer = new Timer();
   
    /**
     * 時鐘間隔周期
     */
    private final int sec = 1000*60;  
   
    /**
     * 啟動服務(wù)后多久開始進行監(jiān)聽
     */
    private final int sec_start = 1000*30;  
   
    /**
     * 監(jiān)聽文件夾所在地址
     */
    private final String path = "D:\\test\\";
   
   
public void contextInitialized(ServletContextEvent event) {
   String status = "文件夾定時監(jiān)聽啟動.";
   event.getServletContext().log(status);
  
        // 執(zhí)行自動監(jiān)聽計劃
        timer.schedule(new PropertiesTask(path), sec_start, sec);
    }
   
    public void contextDestroyed(ServletContextEvent event) {
        String status = "文件夾定時監(jiān)聽停止 .";
        event.getServletContext().log(status);
       
        // 停止自動監(jiān)聽時鐘
        timer.cancel();
    }
}

PropertiesTask .java

/**
* 自動監(jiān)聽任務(wù)
*
* @author litao
*
*/

@SuppressWarnings("unchecked")
public class PropertiesTask extends TimerTask {
private String path;
private File files;
private String[] list1;
private long lastModified;

/**
* 構(gòu)造一個自動更新任務(wù)
*
* @param context
*/
public PropertiesTask(String path) {
   this.path = path;
   this.lastModified = System.currentTimeMillis();
   this.files = new File(path);
   if (files.isDirectory()) {
    this.list1 = files.list();
   }
}

public void run() {
   todo();
}

/**
* 監(jiān)聽文件夾下的文件是否被更新。
*/
private void todo() {
   if (files.isDirectory()) {
    String[] list2 = files.list();
    if (list1.length < list2.length) {
     for (int i = 0; i < list2.length; i++) {
      File file = new File(path + list2[i]);
      while (isFileUpdated(file)) {
       System.out.println(list2[i]+" 文件被更新");
       break;
      }
     }
     list1 = files.list();
    } else {
     list1 = files.list();
    }
   }else{
    System.out.println("************所監(jiān)聽的文件夾路徑- "+path+" -不存在***********");
   }
}

/**
* 判斷物理文件是否已被更新
*
* @param filename
*            物理文件名
* @return 是 true 否 false
*/
private boolean isFileUpdated(File file) {
   if (file.isFile()) {
    long lastUpdateTime = file.lastModified();
    if (lastUpdateTime > this.lastModified) {
     this.lastModified = lastUpdateTime;
     return true;
    } else {
     return false;
    }
   } else {
    return false;
   }
}
}

web.xml配置

<listener>
   <listener-class>com.PropertiesListener</listener-class>
</listener>

true 否 false
*/
private boolean isFileUpdated(File file) {
   if (file.isFile()) {
    long lastUpdateTime = file.lastModified();
    if (lastUpdateTime > this.lastModified) {
     this.lastModified = lastUpdateTime;
     return true;
    } else {
     return false;
    }
   } else {
    return false;
   }
}
}

web.xml配置

<listener>
   <listener-class>com.PropertiesListener</listener-class>
</listener>

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
JAVA中比較兩個文件夾不同的方法
簡單的Java Filter過濾用法實例
中秋R語言學(xué)習(xí)系列Day1_創(chuàng)建文件夾
項目經(jīng)驗分享——Java常用工具類集合
創(chuàng)建文件或文件夾(C# 編程指南)
.Net文件操作--賦值、粘貼、刪除
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服