首页 > 编程语言 > 详细

Java NIO详解及实例和源码下载(二)

时间:2015-03-20 22:07:14      阅读:517      评论:0      收藏:0      [点我收藏+]

这里写链接内容 - WatchService

public class WatchServiceTest {
    public static void main(String[] args) {
        try {
            WatchService watchService = FileSystems.getDefault().newWatchService();
            Paths.get("D:\\").register(watchService, StandardWatchEventKinds.ENTRY_CREATE,
                    StandardWatchEventKinds.ENTRY_DELETE,StandardWatchEventKinds.ENTRY_MODIFY);
            while(true){
                WatchKey key = watchService.take();
                for (WatchEvent<?> event : key.pollEvents()) {
                    System.out.println(event.context()+ "发生了"+event.kind()+"事件");
                }
                boolean vaild = key.reset();//重设WatchKey
                if (!vaild) {//如果重设失败,退出监听
                    break;
                }
            }
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }

    }
}

结果:
技术分享

作者使用的是D盘目录进行监听,这个监控文件变化的监听器可以做到对D盘和它的第一级子目录的变化进行监听,对它的子目录内部的变化无法做到监听。
WatchService有3个方法来获取舰艇目录的文件变化事件。
poll():获取下一个WatchKey,如果没有WatchKey发生就立即返回null。
poll(long timeout, TimeUnit unit):尝试等待timeout时间去获取下一个WatchKey。
take() : 获取下一个WatchKey,如果没有WatchKey发生就移植等待。
如果程序需要一直监控,则选择take()方法。如果程序需要监听指定时间,使用poll()方法。

  • 访问文件属性
public class AttributeViewTest {

    public static void main(String[] args) {
        Path testPath = Paths.get(".\\src\\com\\yin\\nio\\AttributeViewTest.java");
        BasicFileAttributeView basicView = Files.getFileAttributeView(testPath,
                BasicFileAttributeView.class);
        try {
            BasicFileAttributes basicFileAttributes = basicView.readAttributes();
            PrintStr("创建时间:"+new Date(basicFileAttributes.creationTime().toMillis()).toLocaleString());
            PrintStr("最后访问时间:"+new Date(basicFileAttributes.lastAccessTime().toMillis()).toLocaleString());
            PrintStr("最后修改时间:"+new Date(basicFileAttributes.lastModifiedTime().toMillis()).toLocaleString());
            PrintStr("文件大小:"+basicFileAttributes.size());
        } catch (IOException e) {
            e.printStackTrace();
        }

    }   
    private static void PrintStr(String str){
        System.out.println(str);
    }
}

结果:
技术分享

源码下载

Java NIO详解及实例和源码下载(二)

原文:http://blog.csdn.net/u010156024/article/details/44496073

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!