File类
File类表示文件或者文件夹,File类提供了一些方法可以对文件或者文件夹进行操作。
文件路径问题
绝对路径:从盘符开始的路径
举例:"C:\\itheima\\a.txt"
相对路径:从项目的根目录开始的路径
举例:比如项目的根目录 "C:\\IdeaProject\\javase"
需要表示"C:\\IdeaProject\\javase\\day10\\a.txt"这个路径的相对路径
File f=new File("day10\\a.txt");
注意:只有在项目路下的文件或者文件夹,才能写相对路径;否则不能相对路径。
路径名称分隔符:根据操作系统的不同,路径名称的分隔符也是不同的。
Windows系统:"\", Java语言中”\“表示转义字符,必须写两个"\\"
Mac和Linux: "/"
File类的构造方法
public File(String path)
根据文件路径创建File对象
public File(String parent,String child)
根据父路径和子路径创建File对象
public File(File parent,String child)
根据父路径和子路径创建File对象
根据构造方法创建对象
//创建一个File对象,指定文件路径
File f1=new File("C:/itheima/a.txt");
System.out.println(f1);
//创建一个File对象,指定父路径和子路径
File f2=new File("C:/itheima","a.txt");
System.out.println(f2);
File dir=new File("C:/itheima");
//创建一个File对象,指定父路径和子路径
File f3=new File(dir,"a.txt");
System.out.println(f3);
创建文件或文件夹
public boolean createNewFile()
创建文件,如果文件不存在可以创建成功;否则就创建失败。
注意:文件所在的父路径必须存在。
public boolean mkdir()
创建单级文件夹
public boolean mkdirs()
创建多级文件夹(推荐)
判断和获取的功能
public boolean isDirectory()
判断File对象的路径是否为文件夹的路径
public boolean isFile()
判断File对象的路径是否为文件的路径
public boolean exists()
判断文件或者文件夹是否存在
public String getAbsolutePath()
获取绝对路径
public File getAbsoluteFile()
获取绝对路径
public String getParent()
获取父路径
public File getParentFile()
获取父路径
public String getPath()
获取File对象封装的路径
public String getName()
获取文件或者文件的名称
public long lastModified()
获取文件最后一次修改的时间的毫秒值
public long length()
获取文件的大小(单位:字节),不能获取文件夹的大小。
1T=1024GB
1GB=1024MB
1MB=1024KB
1KB=1024字节
1byte=8位
删除文件或文件夹
public boolean delete()
删除文件或者空的文件夹
文件夹遍历
public File[] listFiles()
获取文件中的子文件和子目录(不包括子目录中的内容)
注意:如果调用者是一个文件,或者是文件夹没有权限访问,返回值是null
如果调用着是一个空文件夹,返回值是一个长度为0的数组
- 删除文件夹
public static void deleteDirectory(File dir){
//获取文件夹中的内容
File[] files=dir.listFiles();
//遍历数组
for(File file:files){
//file是文件,删除文件
if(file.isFile()){
file.delete();
}else{
//file是文件夹,递归调研
deleteDirectory(file);
}
}
//上面的for循环结束之后,表示文件夹中的内容已经删干净了。接着需要删除空的文件夹
dir.delete();
}
- 统计一个文件中每一类文件出现的次数
//键:文件的扩展名
//值:文件出现的次数
public static void getCount(File dir,HashMap<String,Integer> map){
//获取文件夹中的内容
File[] files=dir.listFiles();
//遍历文件夹
for(File file:files){
if(file.isFile()){
//获取文件的名称 //hello.txt
String name=file.getName().spilt("\\.")[1];
if(map.containsKey(name)){
//获取原来的值
int value=map.get(name);
//+1之后,再存回去
map.put(name,value+1);
}else{
//如果是第一次添加,值就是1
map.put(name,1);
}
}else{
getCount(file,map);
}
}
}