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());
    }
}

 

转载于:https://www.cnblogs.com/hjy1223/p/7806091.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值