java web中监听本地磁盘文件,并进行上传,复制,处理等

来源:互联网 发布:淘宝收购饿了么 编辑:程序博客网 时间:2024/06/04 00:27
  • 利用commons-io-2,5.jar实现对本地文件增删改的监听,代码如下:
    /**  * 监听文件及文件夹的变化  * @author han  */  public class FileAlterationListen extends FileAlterationListenerAdaptor {    public static String Reportname = "gsqxjb_risk_zyt_road";public static String FileLocaltion = File.separator+"static"+File.separator+"pdf"+File.separator;   public File DirContext;public FileAlterationListen(File dirContext) {super();DirContext = dirContext;}//文件夹创建      @Override      public void onDirectoryCreate(File directory) {          System.out.println(directory.getName()+" directory Create");      }      //文件夹改变      @Override      public void onDirectoryChange(File directory) {          System.out.println(directory.getName()+" directory Change");      }            //文件夹删除      @Override      public void onDirectoryDelete(File directory) {          System.out.println(directory.getName()+" directory Delete");      }        //文件创建      @Override      public void onFileCreate(File file) {          super.onFileCreate(file);         System.out.println("file create");        traverseFolder2(DirContext.getPath(),file.getName());    }        //文件夹改变      @Override      public void onFileChange(File file) {          super.onFileChange(file);          System.out.println("file change");        traverseFolder2(DirContext.getPath(),file.getName());    }        //文件删除      @Override      public void onFileDelete(File file) {          super.onFileDelete(file);          System.out.println(file.getName()+" file Delete");      }          public  void traverseFolder2(String path,String fileName) {File file = new File(path);if (file.exists()) {File[] files = file.listFiles();if (files.length == 0) {return;} else {for (File file2 : files) {if (file2.isDirectory()) {traverseFolder2(file2.getAbsolutePath(),fileName);} else {if (fileName.equals(file2.getName())&&file2.getName().contains(Reportname)&&file2.getName().contains(".doc")) {String name = file2.getName().substring(0, file2.getName().length()-4);// 得到静态资源的相对地址String Apath = FileAlterationListen.class.getClassLoader().getResource("").getPath().split("WEB-INF")[0].replaceAll("/", "\\\\"),subPath=Apath.substring(1, Apath.length());File outFile = new File(subPath+FileLocaltion+name+".pdf");    WordToPdf(file2, outFile);}}}}} else {System.out.println("文件不存在!");}    }  }  

  • 实现ServletContextListen接口,当容器启动时自动启动监听,代码如下(可以传入相应参数):
    public class FileSystemListen implements ServletContextListener {@Overridepublic void contextDestroyed(ServletContextEvent arg0) {}@Overridepublic void contextInitialized(ServletContextEvent arg0) {           File dir = new File("D:/jt_products");          FileAlterationMonitor monitor = new FileAlterationMonitor();                         IOFileFilter filter = FileFilterUtils.or(FileFilterUtils.directoryFileFilter(),FileFilterUtils.fileFileFilter());                  FileAlterationObserver observer = new FileAlterationObserver(dir,filter);          observer.addListener(new FileAlterationListen(dir));                    monitor.addObserver(observer);          try {              //开始监听              monitor.start();             System.out.println("文件监听……");        } catch (Exception e) {              e.printStackTrace();          }  }}

  • 在web.xml中配置监听器,将上述监听器添加如下,demo下载:
    <listener><listener-class>com.fwzx.service.FileSystemListen</listener-class>  </listener>

阅读全文
0 0
原创粉丝点击