java.io.File类
文件和目录路径名的抽象表示形式,使用File类对文件和文件夹进行操作
用途:
1.创建一个文件/文件夹
2.删除文件/文件夹
3.获取文件/文件夹
4.判断文件/文件夹是否存在
5.对文件夹进行遍历
6.获取文件大小
File类是一个与系统无关的类
绝对路径:完整的路径(以盘符C,D等开始的路径)
相对路径:简化的路径(如果使用当前项目的跟目录,路径可以简化书写)
eg:C:\Users\itcast\IdeaProjects\123.txt可以简化成123.txt
注意:
1.路径不区分大小写
2.路径中的文件名分隔符windows使用反斜杠\,反斜杠为转义字符,两个反斜杠代表一个普通的反斜杠
File类的构造方法
1.指定文件的路径名
方法声明:new File(String pathName)
参数说明:pathName是包含文件名的路径名
2.通过给定的父路径和子路径字符串,创建File对象
方法声明:new File(String parent,String child)
参数说明:parent是父路径字符串,child是子路径字符串
3.使用一个File对象与字符串创建File对象
方法声明:new file(File parent,String child)
参数说明:parent是父抽象路径名,child是子路径名字符串
File常用方法:
public String getAbsolutePath():返回此File的绝对路径名字字符串
public String getPath():将此File转换为路径名字字符串
public String getName():返回由此File表示的文件或目录的名称
public long length():返回此File表示的文件的长度
public boolean createNewFile():当且仅具有该名称的文件不存在时,创建一个新的空文件
public boolean delete():删除该文件或目录
public boolean mkdir():创建目录
public boolean mkdirs():创建目录,包含任何必须但是不存在的父目录
public boolean exists():该文件或目录是否存在
public boolean isDirectory():此File表示的是否为目录
public boolean siFile():此File表示的是否为文件
注意:delete方法的删除不走回收站,直接从硬盘上删除,所以删除须谨慎
File了遍历文件夹/目录功能:
public String[] list():返回一个String数组,表示该File目录下所有子文件或目录
public File[] listFiles():返回一个File数组,表示该File目录下所有子文件或目录
如果路径不存在或给出的路径不是一个目录,会抛出空指针异常
File file = new File(pathname:"c:\\Users\\itcast");
String[] arr = file.list();
for(String fileName : arr){
System.out.println(fileName);
}
File file = new File(pathname:"c:\\Users\\itcast");
File[] files = file.listFiles();
for(File f: files){
System.out.println(f);
}
递归
直接递归:当前方法内调用自己
间接递归:A方法调用B方法,B方法调用C方法,C方法调用A方法
注意:
1.递归要有条件限定,保证递归能停下来;
2.递归次数不能太多;
3.构造方法禁止递归
//计算1-n之间的整数和
public class Recursion {
public static void main(String[] args) {
int s = sum(10);
System.out.println(s);
}
public static int sum(int n) {
if (n == 1) {
return 1;
}
return n + sum(n - 1);
}
}
import java.io.File;
//递归打印多级目录
public class RecursionMulu {
public static void main(String[] args) {
File file = new File("D:\\javasoftware");
getAllFile(file);
}
private static void getAllFile(File dir) {
File[]files = dir.listFiles();
for (File f:files
) {if(f.isDirectory()){
getAllFile(f);
}
else{
System.out.println(f);
}
}
}
}
FileFilter