Java基础知识之文件操作(三)——NIO获取文件属性
来源:互联网 发布:linux cpu核心使用率 编辑:程序博客网 时间:2024/06/04 17:50
1.NIO简单介绍
JDK1.4开始,Java提供一系列改进的输入/输出处理的新功能,被称为New IO(NIO),在java.nio包下。
Channel(通道)和 Buffer(缓冲)是NIO中两个核心对象。
JDK1.7对原有的NIO进行了改进,被称为NIO.2。
NIO.2提供了全面的文件IO和文件系统访问支持,基于异步Channel的IO。
NIO.2中的操作文件工具类Files,路径工具类Paths,获取Path接口对象,下面工具类的简单使用
复制文件
//复制文件Files.copy(Paths.get("G:/json.txt"), new FileOutputStream("G:/test.txt"));判断文件是否为隐藏文件
//判断文件是否为隐藏文件(判断文件,而非文件夹)System.out.println(Files.isHidden(Paths.get("G:/json.txt")));
判断文件是否可读可写
//是否可写System.out.println(Files.isWritable(path));//是否可读System.out.println(Files.isReadable(path));
得到文件的大小
//得到文件的大小(字节)System.out.println(Files.size(Paths.get("G:/JavaApi/jdk-8u111-docs-all.zip")));
读取文件的所有行
//读取文件所有行,并制定读取编码List<String> lines = Files.readAllLines(Paths.get("G:/json.txt"),Charset.forName("gbk"));
将多行字符串写入指定文件
//将多行字符串写入指定文件夹,并指定编码Files.write(Paths.get("G:/test.txt"), lines, Charset.forName("gbk"));
得到系统盘的空间
FileStore dStore = Files.getFileStore(Paths.get("E:"));//D盘总空间System.out.println(dStore.getTotalSpace());//D盘可用空间System.out.println(dStore.getUsableSpace());
2.FileVisitor遍历文件和目录
// 遍历G:\KuGou盘目录下所有的文件和子目录Files.walkFileTree(Paths.get("G:", "KuGou"), new SimpleFileVisitor<Path>() {// 访问目录时使用发该方法@Overridepublic FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {// 继续遍历 Continue继续return FileVisitResult.CONTINUE;}// 访问文件使用该方法@Overridepublic FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {if (file.toString().endsWith(".mp3")) {System.out.println(file);//如果找到一个就返回则 添加以下代码 TERMINATE 结束//return FileVisitResult.TERMINATE;}return FileVisitResult.CONTINUE;}});}
3.WatchService监控文件变化
//获取文件系统的WatchService对象WatchService watchService = FileSystems.getDefault().newWatchService();//为C:盘根路径注册监听Paths.get("C:/").register(watchService//监听创建操作,StandardWatchEventKinds.ENTRY_CREATE//监听删除操作,StandardWatchEventKinds.ENTRY_DELETE//监听修改操作,StandardWatchEventKinds.ENTRY_MODIFY);//死循环一直监听while(true) {//一直等待,直到获取下一个文件变化事件WatchKey key = watchService.take();//遍历监控获得的事件列表for (WatchEvent<?> event : key.pollEvents()) {//event.context()返回触发事件的文件或目录System.out.println(event.context() + "发生了" + event.kind()+ "事件");}//重新设置WatchKeyboolean valid = key.reset();//如果设置失败则退出监听if (!valid) {break;}}
4.访问文件属性
java.nio.file.attribute包下提供了工具类,可以读取、修改文件属性
XxxAttributeView: 代表文件的属性的“视图”
XxxAttributes:代表文件属性的”集合“,一般通过XxxAttributeView对象获取XxxAttributes。
得到文件的基本信息
//获得将要操作的文件Path path = Paths.get("G:/test.txt");//获取访问基本属性的BasicFileAttributeViewBasicFileAttributeView basicView = Files.getFileAttributeView(path, BasicFileAttributeView.class);//获取访问基本属性的BasucFileAttributesBasicFileAttributes basicAttribs = basicView.readAttributes();//访问文件的基本属性//创建时间System.out.println(new Date(basicAttribs.creationTime().toMillis()));//最后访问时间System.out.println(new Date(basicAttribs.lastAccessTime().toMillis()));//最后修改时间System.out.println(new Date(basicAttribs.lastModifiedTime().toMillis()));//文件大小System.out.println(basicAttribs.size());
获取文件所属的用户名
//获取访问文件属主信息的FileOwnerAttributeViewFileOwnerAttributeView onerView = Files.getFileAttributeView(path, FileOwnerAttributeView.class);//获取文件所属的用户System.out.println(onerView.getOwner());//获取系统中 guest对应的用户 (保证电脑创建有多个用户)UserPrincipal user = FileSystems.getDefault().getUserPrincipalLookupService().lookupPrincipalByName("guset");//修改用户onerView.setOwner(user);
设置文件属性(隐藏,只读)
// 获取访问DOS属性的DosFileAttributeViewDosFileAttributeView dosView = Files.getFileAttributeView(path, DosFileAttributeView.class);// 可以加以判断,Files.isHidden(path)是否已经隐藏// 将文件设置为隐藏dosView.setHidden(true);// 设置为只读dosView.setReadOnly(true);
1 0
- Java基础知识之文件操作(三)——NIO获取文件属性
- File文件基本操作之三: java 读取properties文件属性
- 文件操作--设置文件属性、获取文件属性
- OC文件操作、获取文件属性
- linux C复习:文件操作(stat获取文件属性)
- NIO学习笔记(三)——NIO复制文件
- Java基础知识之文件操作(二)——IO流复制文件
- 关于Linu型的一些基础常见操作命令(三)——文件属性操作
- java Nio 异步操作(三)
- Java基础知识之文件操作(一)——File类遍历文件夹
- java根据头文件获取文件属性
- Java基础知识总结(二)——NIO
- [疯狂Java]NIO.2:文件属性
- JAVA NIO总结(三)—分散聚集、文件锁定、字符集
- java IO/NIO操作文件
- Java NIO Files 操作文件
- 封装类之FileVersion(获取文件属性)
- Java NIO(三)
- Linux启动故障类排除(Grub引导)
- Linux. Hadoop Hbase & MapReduce
- spring+redis搭建(测试学习之一)
- 找出宏定义的位置方法
- LeetCode 4. Median of Two Sorted Arrays
- Java基础知识之文件操作(三)——NIO获取文件属性
- 青蛙跳台阶题目及其延伸
- center os 配置redis .net 连接遇到的坑
- Centos 7上面Mongodb开机无法自启动
- python中strip()方法的解析
- 二、shell监控tomcat进程宕机重启
- JS 中this 所指向的对象
- JDK的java.io.BufferedOutputStream的源码
- unity Socket.IO+Nodejs+webSocket环境搭建