使用commons-vfs监听文件系统
2018-03-21 20:12:24
1640次阅读
0个评论
Apache commons VFS又叫做 Apache Commons Virtual FileSystem。是一组功能强大的对各类资源的访问接口,目前这个JAR包得到了全新的重构,目前最新的版本是2.2。
如果我们在平常的工作中,需要得到一些不同格式文件的信息,比如文件大小、所在路径、文件最后更改时间等,或者我们需要对文件进行一些常规的操作,比如删除文件,拷贝文件等等,那么Apache Commons中的VFS(Virtual File System)就是我们可以考虑的一个开源系统。commons-vfs是一个强大的虚拟文件系统,为操作各种各样的文件系统提供了统一API。这里使用的是commons-vfs2。
据VFS的官网介绍,它目前支持如下文件格式:
FTP 、Local Files 、HTTP and HTTPS 、SFTP 、Temporary Files 、Zip, Jar and Tar (uncompressed, tgz or tbz2) 、gzip and bzip2 、res 、ram 、mime。
测试代码:
import org.apache.commons.vfs2.*;
import org.apache.commons.vfs2.impl.DefaultFileMonitor;
import org.junit.Test;
import java.io.File;
public class ListenerTest {
@Test
public void test(){
try {
FileSystemManager fsm = VFS.getManager();
FileObject file = fsm.resolveFile(new File("D://vfs").getAbsolutePath());
DefaultFileMonitor fileMonitor = new DefaultFileMonitor(new FileListener() {
@Override
public void fileCreated(FileChangeEvent event) throws Exception {
resolveEvent("Created",event);
}
@Override
public void fileDeleted(FileChangeEvent event) throws Exception {
resolveEvent("Deleted",event);
}
@Override
public void fileChanged(FileChangeEvent event) throws Exception {
resolveEvent("Changed",event);
}
private void resolveEvent(String type, FileChangeEvent event){
FileObject fileObject = event.getFile();
FileName fileName = fileObject.getName();
System.out.println(type + ": " + fileName.toString());
}
});
fileMonitor.addFile(file);
fileMonitor.start();
while(true){
Thread.sleep(1000);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
跑起来,然后在D盘下面创建vfs,并依次创建一个文本文档,重命名为ddd,打开文档编写内容并保存,删除文件,你会发现控制台会输出:
Created: file:///D:/vfs/新建文本文档.txt
Created: file:///D:/vfs/ddd.txt
Deleted: file:///D:/vfs/新建文本文档.txt
Changed: file:///D:/vfs/ddd.txt
Deleted: file:///D:/vfs/ddd.txt
做JAVA的同学应该都知道 java.io.File类有一个lastModified方法,它返回一个修改时间,我们也可以通过这个方法来检测文件是否被修改过。
import org.junit.Test;
import java.io.File;
public class TestFileModified {
@Test
public void test(){
File file = new File("D:\\update.txt");
long lastModified = 0;
while(true){
if(file.lastModified()>lastModified){
lastModified=file.lastModified();
System.out.println("文件被修改, lastModified=" + lastModified);
}
}
}
}
然后我们修改D盘下面的文件 就可以看到每次修改都会在控制台打印出对应的修改时间
文件被修改, lastModified=1480350296000
文件被修改, lastModified=1493190808563
文件被修改, lastModified=1493190812906
00
相关话题
- 使用commons-io-2.0监听文件变化
- Apache commons compress文件打包、压缩
- Apache-Commons CSV读写文件
- 分布式文件系统选型
- Linux上使用commons-net.jar注意的问题
- SpringMVC使用StandardServletMultipartResolver上传文件
- FastDFS分布式文件系统封装JAVA client工具类
- SpringBoo使用jasypt加密配置文件
- CentOS 8.x系统停止维护yum无法使用解决方法
- 使用jquery-form.js异步上传文件
- Apache的commons-net实现FTP的文件上传下载
- vue中watch监听数组或者对象
- 最新商城系统推荐
- jQuery监听输入框值赋值变化
- Apache Commons Compress zip压缩解压