java web中监听本地磁盘文件,并进行上传,复制,处理等
2017-10-12 13:44
411 查看
利用commons-io-2,5.jar实现对本地文件增删改的监听,代码如下:
实现ServletContextListen接口,当容器启动时自动启动监听,代码如下(可以传入相应参数):
在web.xml中配置监听器,将上述监听器添加如下,demo下载:
/** * 监听文件及文件夹的变化 * @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 { @Override public void contextDestroyed(ServletContextEvent arg0) { } @Override public 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>
相关文章推荐
- 使用java将数据库文件复制到本地磁盘中
- 重新学javaweb---文件上传监听--进度条
- java上传文件到磁盘中,设置tomcat虚拟路径进行访问,解决重布项目图片消失问题
- java web上传文件至非项目路径并配置tomcat虚拟路径进行下载
- JAVA 使用springMVC 上传多张图片或文件,并对图片进行按比例缩放处理
- Java Web 学习笔记之十三:RestEasy接口处理浏览器表单上传的文件
- WEB版一次选择多个文件进行批量上传(swfupload)的解决方案 上传多文件
- 从本地和远程复制文件java 代码
- WEB版一次选择多个文件进行批量上传(swfupload)的解决方案
- Java中复制文件和文件夹的操作,异常未处理,无注释-_-!
- 一个页面中上传文件,另一个页面进行处理
- 利用正则表达式获取特定文件(如java class)并对其进行处理(如代码统计)
- Java web中,当表单含有文件上传时,提交数据的如何读取
- java中文件上传的处理
- java-oracle-blob对excle进行上传和下载的一些处理
- JavaWeb上传下载文件
- JAVA应用XFire框架来实现WebServie的大文件传输功能之二(上传)
- 根据URL从服务器端复制文件到本地java代码
- java web应用文件下载(包括中文文件名乱码处理)
- Java Web 上传文件 (1)