位于: java.io包
表示文件或者文件夹
功能:对文件或者文件夹进行 创建, 删除,查看等操作, 不能读取文件的内容。
1.路径的分割符不一样
java跨平台的:
不同的平台: 路径的分割符不一样:
windows: \
linux,macx: /
java程序写路径:
/
不管是在linux, windows也能识别
\
: 在java中转义符开始符号: java代码:\\
区分不同的操作系统:
使用File的静态的常量:
public static final String separator
path分割符:
linux操作系统:
:
windows:
;
使用File的常量:
public static final String pathSeparator
2.四个构造方法
//File file = new File("D:\\test.txt");
//完整路径
File file = new File("D:/test.txt");
//上级目录
File file1 = new File("D:/图片","1.jpg");
File parent = new File("D:/图片");
File file2 = new File(parent, "1.jpg");
//文件夹
File file3 = new File("D:\\nginx-1.18.0\\conf");
3.常见方法
(1)判断文件/文件夹是否存在,如果文件存在则不是目录就是文件
exists()
isFile()
isDirectory()
System.out.println(file3.exists());
System.out.println("是否是文件:"+file.isFile()); //true
System.out.println("是否是目录:"+file3.isDirectory());//false
(2)创建文件
createNewFile()
//创建文件: 如果上级目录不存在, 抛异常:IOException
File file = new File("d:/test.txt");
try {
boolean rs = file.createNewFile();
System.out.println(rs);
//删除
file.delete();
} catch (IOException e) {
e.printStackTrace();
}
(3)创建文件夹
mkdir()
//创建文件夹
File file2 = new File("d:/a");
/* boolean rs1 = file2.mkdir();
System.out.println("是否创建成功:"+rs1);*/
boolean rs2 = file2.mkdirs();
System.out.println("是否创建成功:"+rs2);
//删除文件夹
boolean rs3 = file2.delete();
System.out.println("是否删除成功:"+rs3);
(4)创建文件夹
4.遍历子文件.子文件夹
(1)遍历子文件和文件夹
File file = new File("D:/a");
//子文件/子文件夹
//list()
String[] subFileStrs = file.list();
for (String subFileStr : subFileStrs) {
System.out.println(subFileStr);
}
(2)得到指定类型命名的子文件
1.返回文件名
//使用FilenameFilter过滤
String[] subFileStrs = file.list(new FilenameFilter() {
//把目录下每一个子文件或者子目录, 调用一次accept()
//根据accept()方法返回值,判断是否添加到subFileStrs数组
// 如果返回值true,添加, false: 不添加
//dir: 上级目录 name: 子文件/子文件夹的名字
@Override
public boolean accept(File dir, String name) {
//false: 过滤掉
//return false;
//isFile()
//getPath() 获取路径
//System.out.println(dir.getPath());
//System.out.println(name);
//得到 子文件/子文件夹File对象
File subFile = new File(dir,name);
return subFile.isFile() && name.endsWith(".txt") ;
}
});
for (String subFileStr : subFileStrs) {
System.out.println(subFileStr);
}
2.返回此文件目录+文件名
//返回File数组
File[] subFiles = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
File subFile = new File(dir,name);
return subFile.isFile() && name.endsWith(".txt") ;
}
});
for (File subFile : subFiles) {
// getParent() 获取上级目录路径
//getParentFile() 获取上级目录File对象
System.out.println(subFile.getPath());
}
3.情况类推,筛选条件返回需要用到的
File[] subFiles = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
//System.out.println(pathname.getPath());
return pathname.isFile();
}
});
5.遍历文件夹下所有的后代文件或者子文件夹
得到子的目录后开始递归
public static void iterSubFile(File file){
//得到子的
File[] subFiles = file.listFiles();
for (File subFile : subFiles) {
//getName() 文件名/文件夹名
//System.out.println(subFile.getName());
//递归
if(subFile.isDirectory()){//文件夹
iterSubFile(subFile);
}else{ //文件
subFile.delete();
}
}
//删除空目录
file.delete();
}
public static void main(String[] args) {
// iterSubFile(new File("D:/a"));
}