NIO操作文件的常用工具类-1

NIO中封装了很多直接操作文件的类,比如目录扫描、文件监听等。

直接上代码:

import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.FileSystems;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.StandardWatchEventKinds;
import java.nio.file.WatchEvent;
import java.nio.file.WatchKey;
import java.nio.file.WatchService;
import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.attribute.FileOwnerAttributeView;
import java.util.ArrayList;
import java.util.List;

public class NewIO {

    public static void main(String[] args) throws IOException,
            InterruptedException {

        Path path = Paths.get(".");
        System.out.println(path.getNameCount());
        String str = "C:\\Users\\huang_xiaofei\\Desktop";
        /**
         * 一次读取文件中的所有内容
         */
        List<String> lines = Files.readAllLines(
                Paths.get("C:\\Users\\huang_xiaofei\\Desktop\\test.txt"),
                Charset.forName("gbk"));
        System.out.println(lines);

        // 把list中的数据写入文件
        List<String> list = new ArrayList<>();
        list.add("哈哈");
        list.add("呵呵");
        Files.write(Paths.get("C:\\Users\\huang_xiaofei\\Desktop\\test.txt"),
                list, Charset.forName("gbk"));

        /**
         * 遍历文件夹,寻找符合要求的文件
         */
        Files.walkFileTree(Paths.get(str, "相关文档"),
                new SimpleFileVisitor<Path>() {
                    public FileVisitResult visitFile(Path file,
                            BasicFileAttributes attrs) throws IOException {
                        if (file.endsWith("中国电科院-安全功能测试点小结.doc")) {
                            return FileVisitResult.TERMINATE;
                        }
                        return FileVisitResult.CONTINUE;
                    }
                });

        /**
         * 监听文件的变化
         */
        WatchService watchServie = FileSystems.getDefault().newWatchService();
        Paths.get(str).register(watchServie,
                StandardWatchEventKinds.ENTRY_CREATE,
                StandardWatchEventKinds.ENTRY_MODIFY);
        while (true) {
            WatchKey key = watchServie.take();
            for (WatchEvent<?> event : key.pollEvents()) {
                System.out.println(event.context() + "::" + event.kind());
            }
            boolean flag = key.reset();
            if (!flag) {
                break;
            }
        }
        /**
         * 获取文件的权限
         */
        String fp = "C:\\Users\\huang_xiaofei\\Desktop\\test.txt";
        FileOwnerAttributeView owner = Files.getFileAttributeView(
                Paths.get(fp), FileOwnerAttributeView.class);
        System.out.println(owner.getOwner());
    }
}

 

posted on 2017-11-08 20:46  时人已不觉  阅读(248)  评论(0编辑  收藏  举报