文件的构成
- 文件头信息(Metadata)
- 文件内容
- File文件操作类:java.io.File
注1:java.io.File类是一个普通的类,若要实例化对象,用到以下构造方法
方法 | 解释 |
---|---|
File(String pathname) | 创建指定路径文件对象 |
new 操作注意事项:
- 既可以指文件,也可以指文件夹
- 通过路径创建File:可以使用绝对路径/相对路径
- 不管路径上是否有这个文件/文件夹,Java中都可以创建得到一个File对象
常见的API方法:
方法 | 解释 |
---|---|
boolean exists() | 测试指定路径中文件或者目录是否存在 |
boolean isDirectory() | 判定一个文件是目录 |
boolean delete() | 删除文件(若是没有该路径的文件,报错) |
boolean createNewFile() throwsIOException | 创建一个新文件(如果有再创建就报错) |
boolean mkdir() | 创建由此抽象路径命名的目录(new File(“E://tmp/1”).mkdir(),若是E盘没有tmp目录就报错) |
boolean mkidrs() | 创建由此抽象路径命名的路径,包括任何必需但不存在的父目录 (new File(“E://tmp/1”).mkdirs(),若是没有tmp目录就) |
Strings getAbsolutePath() | 返回此抽象路径名的绝对路径名字符串 |
String getPath() | 将此抽象路径名转换为路径名字字符串 |
String getName() | 返回此抽象路径名表示的文件或目录名称 |
String getParent() | 获取父目录的路径 |
File getParentFile() | 获取父目录的对象 |
long lastModified() | 获取此抽象路径名表示的文件上次修改的时间 |
long length() | 获取文件大小(bit) |
File[] listFiles() | 返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件(目录下一级的子文件/子文件夹) |
应用:遍历某个目录下所有的子文件/子文件夹
先在本地文件中找一个文件:
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class ListFile {
public static List<File> listDir(File file) {
List<File> list = new ArrayList<>();
//if(file.isDirectory()){
//获取目录下一级的子文件、子文件夹
File[] children = file.listFiles();
if (children != null) {
for (File ch : children) {
//返回的文件列表不包含文件夹
if (ch.isDirectory()) { //如果是子文件夹,递归调用获取
list.addAll(listDir(ch));
} else {
list.add(ch);
}
// //包含文件夹
// list.add(ch);
// if (ch.isDirectory()) {
// list.addAll(listDir(ch));
// }
}
}
//}
return list;
}
public static void main(String[] args) {
File dir = new File("F:\\docs\\api");
List<File> files = listDir(dir);
//jdk1.8集合框架使用stream操作(对集合操作使用流操作),可以使用lambda表达式
files.stream(). //集合的Stream操作,提供更多功能,效率也高
.filter() //过滤
// .map() //把集合中的元素映射为另外一种类型
// .map(f ->{
// return f.getName()
// })
// .collect() //进行流操作之后重新返回
forEach(System.out::println);
}
}