文章目录
- 一、Files类
- 1.1 简介
- 1.2 常用方法
- 1.3 重要方法
- 二、测试
- 2.1 列出文件指定目录下的所有文件和子目录
- 2.2 判断c盘的总空间,可用空间
- 三、Paths,Path类
- 3.1 简介
- 3.2 常用方法
- 四、FileVisitor
- 4.1 简介
- 4.2 使用方法
- 4.3 遍历输出指定目录下的所有文件夹和目录
- 五、访问文件属性
- 5.1常用的接口
- 5.2 获取文件的创建时间
一、Files类
1.1 简介
操作文件和文件夹的工具类
1.2 常用方法
- static Path copy(Path source, Path target, CopyOption… options)
将文件复制到目标文件。
path类可通过Paths.get(String src)获得。 - static Path createDirectory(Path dir, FileAttribute<?>… attrs)
创建一个新的目录。 - static Path createLink(Path link, Path existing)
为现有文件创建新的链接(目录条目) (可选操作) - static void delete(Path path)
删除文件。 - static Object getAttribute(Path path, String attribute, LinkOption… options)
读取文件属性的值。
Files.getAttribute(Paths.get("E:\\a.java"), "UNIX:uid");
- static boolean isDirectory(Path path, LinkOption… options)
测试文件是否是目录。
1.3 重要方法
- static boolean isHidden(Path path)
告知文件是否被 隐藏 - static long size(Path path)
返回文件的大小(以字节为单位)。 - static List readAllLines(Path path, Charset cs)
从文件中读取所有行。 - static Path write(Path path, byte[] bytes, OpenOption… options)
将字节写入文件。
public static void main(String[] args) throws IOException {
Path path = Paths.get("E:\\a.java");
Path path1 = Paths.get("E:\\b.java");
List<String> strings = Files.readAllLines(path);
Files.write(path1, strings);
}
二、测试
2.1 列出文件指定目录下的所有文件和子目录
说明:不包括递归的目录
static int count = 0;
public static void main(String[] args) throws IOException {
Path path2 = Paths.get("E:\\api");
Files.list(path2).forEach(path -> {
count++;
System.out.println(path);
});
System.out.println(count);
}
2.2 判断c盘的总空间,可用空间
public static void main(String[] args) throws IOException {
Path path2 = Paths.get("E:\\api");
FileStore fileStore = Files.getFileStore(path2);
System.out.println("C盘总共空间:" + fileStore.getTotalSpace());
System.out.println("C盘可用空间:" + fileStore.getUsableSpace());
}
三、Paths,Path类
3.1 简介
Paths类主要获取Path实例对象,Path类提供对路径的一系列操作
3.2 常用方法
- public static Path get(String first,
String… more)将路径字符串或从路径字符串连接起来的一系列字符串转换为Path - boolean endsWith(Path other)
测试此路径是否以给定的路径结束。 - Path getRoot()
返回此路径的根组分作为 Path对象,或 null如果该路径不具有根组件。 - Path toAbsolutePath()
返回表示此路径的绝对路径的 Path对象。 - URI toUri()
返回一个URI来表示此路径。
四、FileVisitor
4.1 简介
文件访问器
4.2 使用方法
- Files.walkFileTree(path2,new SimpleFileVisitor
(){…}
重写SimpleFileVisitor接口的方法,主要有:
- public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs)
访问子目录前触发方法- public FileVisitResult visitFile(Path file, BasicFileAttributes attrs);
访问文件时触发该方法- public FileVisitResult visitFileFailed(Path file, IOException exc);
访问文件失败时触发该方法。- public FileVisitResult postVisitDirectory(Path dir, IOException exc);
访问子目录后触发该方法
4.3 遍历输出指定目录下的所有文件夹和目录
增加全局变量就可以统计文件夹或者目录的个数
static int count = 0;
public static void main(String[] args) throws IOException {
Path path2 = Paths.get("E:\\com");
Files.walkFileTree(path2,new SimpleFileVisitor<Path>(){
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
return super.preVisitDirectory(dir, attrs);
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
count ++;
System.out.println(file);
return super.visitFile(file, attrs);
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
return super.visitFileFailed(file, exc);
}
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
count ++;
System.out.println(dir);
return super.postVisitDirectory(dir, exc);
}
});
System.out.println(count);
}
结果:
E:\com\westos\ribbonconsumer\controller\HelloRibbonconsumer.java
E:\com\westos\ribbonconsumer\controller
E:\com\westos\ribbonconsumer\RibbonConsumerApplication.java
E:\com\westos\ribbonconsumer
E:\com\westos\springboothello\demo\controller\HelloController.java
E:\com\westos\springboothello\demo\controller
E:\com\westos\springboothello\demo\dao\StudentDAO.java
E:\com\westos\springboothello\demo\dao
E:\com\westos\springboothello\demo\DemoApplication.java
E:\com\westos\springboothello\demo\domain\Student.java
E:\com\westos\springboothello\demo\domain
E:\com\westos\springboothello\demo
E:\com\westos\springboothello\other\HellobController.java
E:\com\westos\springboothello\other
E:\com\westos\springboothello
E:\com\westos
E:\com
17
五、访问文件属性
5.1常用的接口
- Interface FileAttribute
父接口 - Interface AclFileAttributeView
支持读取或更新文件的访问控制列表(ACL)或文件所有者属性的文件属性视图。 - Interface BasicFileAttributeView
文件属性视图,提供许多文件系统通用的基本文件属性集的视图 - Interface DosFileAttributeView
提供传统“DOS”文件属性视图的文件属性视图。 - Interface FileOwnerAttributeView
支持阅读或更新文件所有者的文件属性视图。 - Interface PosixFileAttributeView
文件属性视图,提供通常与实现便携式操作系统接口(POSIX)系列标准的操作系统使用的文件系统上的文件关联的文件属性视图。 - Interface UserDefinedFileAttributeView
文件属性视图,提供文件的用户定义属性(有时称为扩展属性)的视图 。
5.2 获取文件的创建时间
public static void main(String[] args) throws IOException {
Path path2 = Paths.get("E:\\a.java");
BasicFileAttributeView basic = Files.getFileAttributeView(path2, BasicFileAttributeView.class);
BasicFileAttributes basicFileAttributes = basic.readAttributes();
Date date = new Date(basicFileAttributes.creationTime().toMillis());
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(format.format(date).toString());
}