首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

学习Jnotify资料监视

2012-10-21 
学习Jnotify文件监视?学习Jnotify文件监视用例?研究文件监视(Windows),对文件的增加、修改、重命名、删除做记

学习Jnotify文件监视



?学习Jnotify文件监视用例

?

研究文件监视(Windows),对文件的增加、修改、重命名、删除做记录,找到Java开源技术Jnotify,做了稍微学习,留下一点记录,以资备用,网络上资料有限。

?

?

package com.jnotify;import net.contentobjects.jnotify.JNotify;/** * Monitor file directory file (folder ) is created, modified, deleted, renamed files[folders] * (To adapt to a sub-folders). * JDK: 1.6.0_19 * JAR: jnotify-0.94.jar * @author Dennis Zhao * @createdTime:2012-09-28 * Technology from website: http://jnotify.sourceforge.net/ */public class JNotifyTest {    public static void main(String[] args) {        JNotifyTest test = new JNotifyTest();        try {            test.sample();        } catch (Exception e) {            e.printStackTrace();        }    }    public void sample() throws Exception {        // path to watch        String path = "D:\\abc";        // watch mask, specify events you care about,        // or JNotify.FILE_ANY for all events.        int mask = JNotify.FILE_CREATED | JNotify.FILE_DELETED | JNotify.FILE_MODIFIED | JNotify.FILE_RENAMED;        // watch subtree?        boolean watchSubtree = true;        // add actual watch        int watchID = JNotify.addWatch(path, mask, watchSubtree, new Listener());        // sleep a little, the application will exit if you        // don't (watching is asynchronous), depending on your        // application, this may not be required        Thread.sleep(15000);        //Thread.sleep(5000);        // to remove watch the watch        boolean res = JNotify.removeWatch(watchID);        if (!res) {            // invalid watch ID specified.            System.out.println("Delete from data : " + watchID);        }    }}

?

?

package com.jnotify;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import net.contentobjects.jnotify.JNotifyListener;/** * Listener implement * JDK: 1.6.0_19 * JAR: jnotify-0.94.jar * @author Dennis Zhao * @createdTime:2012-09-28 * Technology from website: http://jnotify.sourceforge.net/ */public class Listener implements JNotifyListener {    public void fileRenamed(int wd, String rootPath, String oldName, String newName) {        writeTextAppend("Renamed==1==File path== [" + rootPath + File.separator + oldName + "] --> [" + rootPath + File.separator + newName + "]==time==" + System.currentTimeMillis());        //print("Renamed " + rootPath + " : " + oldName + " -> " + newName);        operateDataDB2(wd,rootPath + File.separator + newName,"Renamed",rootPath,rootPath + File.separator + oldName,rootPath + File.separator + newName);    }    public void fileModified(int wd, String rootPath, String name) {        writeTextAppend("Modified==2==File path==  [" + rootPath + File.separator + name + "]==time==" + System.currentTimeMillis());        //print("Modified " + rootPath + " : " + name);        operateDataDB2(wd,rootPath + File.separator + name,"Modified",rootPath,"","");    }    public void fileDeleted(int wd, String rootPath, String name) {        writeTextAppend("Deleted==3==File path==  [" + rootPath + File.separator + name + "]==time==" + System.currentTimeMillis());        //print("Deleted " + rootPath + " : " + name);        operateDataDB2(wd,rootPath + File.separator + name,"Deleted",rootPath,"","");    }    public void fileCreated(int wd, String rootPath, String name) {        writeTextAppend("Created==4==File path==  [" + rootPath + File.separator + name + "]==time==" + System.currentTimeMillis());        //print("Created " + rootPath + " : " + name);        operateDataDB2(wd,rootPath + File.separator + name,"Created",rootPath,"","");    }    void print(String msg) {        System.out.println(msg);    }    /**     *     * writeText     * @param record     * @return the void     */    private void writeTextAppend(final String record) {        try {            FileWriter writer = new FileWriter("d:\\File_log.txt", true);            writer.write(record + "\n");            writer.close();        } catch (IOException e) {            e.printStackTrace();        }    }    /**     *     * oracle database test     * operateDataOracle     * @param wd     * @param operatName     * @param operateType     * @param rootPath     * @param oldName     * @param newName     * @return  void     */    private void operateDataOracle(int wd, String operatName, String operateType, String rootPath, String oldName, String newName) {        Connection conn = null;        try {            Class.forName("oracle.jdbc.driver.OracleDriver");            conn = java.sql.DriverManager.getConnection("jdbc:oracle:thin:@10.199.130.221:1522:ORCL", "scott", "tiger");            String sql = "insert into t_file_log (ID, OP_NAME, OP_DATETIME, OP_ID, OP_TYPE, ROOT_PATH, OLD_NAME, NEW_NAME) "                + "values (seq_file_log.nextval, ?, sysdate, ?, ?, ?, ?, ?)";            PreparedStatement pst = conn.prepareStatement(sql);            pst.setString(1, operatName);            pst.setInt(2, wd);            pst.setString(3, operateType);            pst.setString(4, rootPath);            pst.setString(5, oldName);            pst.setString(6, newName);            pst.executeUpdate();            pst.close();        } catch (ClassNotFoundException e) {            e.printStackTrace();        } catch (SQLException e) {            e.printStackTrace();        } finally {            if (conn != null) {                try {                    conn.close();                } catch (SQLException e) {                    e.printStackTrace();                }            }        }    }    /**     *     * DB2 database test     * operateDataDB2     * @param wd     * @param operatName     * @param operateType     * @param rootPath     * @param oldName     * @param newName     * @return  void     */    private void operateDataDB2(int wd, String operatName, String operateType, String rootPath, String oldName, String newName) {        Connection conn = null;        try {            Class.forName("com.ibm.db2.jcc.DB2Driver");            conn = java.sql.DriverManager.getConnection(                "jdbc:db2://10.199.30.249:50000/DB902:currentSchema=ORCL;", "SCOTT", "TIGER");            String sql = "insert into TRSUAT.t_file_log (ID, OP_NAME, OP_DATETIME, OP_ID, OP_TYPE, ROOT_PATH, OLD_NAME, NEW_NAME) "                + "values (seq_file_log.nextval, ?, sysdate, ?, ?, ?, ?, ?)";            PreparedStatement pst = conn.prepareStatement(sql);            pst.setString(1, operatName);            pst.setInt(2, wd);            pst.setString(3, operateType);            pst.setString(4, rootPath);            pst.setString(5, oldName);            pst.setString(6, newName);            pst.executeUpdate();            pst.close();        } catch (ClassNotFoundException e) {            e.printStackTrace();        } catch (SQLException e) {            e.printStackTrace();        } finally {            if (conn != null) {                try {                    conn.close();                } catch (SQLException e) {                    e.printStackTrace();                }            }        }    }}

?

?

?

注意地方:

增加启动命令项,

java -Djava.library.path=. -jar jnotify-VER.jar [dir]

这里有如图Ecplise下面简单设置,如下图

?

?

?
学习Jnotify资料监视
?

?如需要实际业务操作,根据情况做适当调整。

?学习Jnotify资料监视

热点排行