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