码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-03-20 22:08:04      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:java-nio   nio流   java-io   java   nio   

这里写链接内容 - 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详解及实例和源码下载(二)

标签:java-nio   nio流   java-io   java   nio   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!