1、File类
1.1、概述
java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建,查找,删除等操作
1.2、构造方法
- public File(String pathname):通过将给定的路径字符串转换为抽象路径名来创建File对象
- public File(String parent, String child):从父路径名字符串和子路径名字符串创建新的File对象
- public File(File parent, String child):从父路径名字符串和子路径名字符串创建新的File对象
package com.bdit;
import java.io.File;
/*
File对象创建
*/
public class Demo1 {
public static void main(String[] args) {
File file1=new File("e:\\a.txt");
File file2=new File("d:\\","abc\\b.txt");
File file3=new File("e:\\");
File file4=new File(file3,"bdit");
}
}
【注意:1、一个File对象代表的是某个路径下的一个文件或者目录
2、无论该目录下是否存在文件或目录,都不影响File对象的创建】
1.3、常用方法
获取功能的方法
- public String getAbsolutePath():返回此File的绝对路径名字符串
- public String getPath():将此File转换为路径名字符串
- public String getName():返回由此File表示的文件或目录名
- public long length():返回由此File表示的文件的长度
- public String getParent():返回由此File对象表示的路径的父目录
package com.bdit;
import java.io.File;
public class Demo2 {
public static void main(String[] args) {
File f=new File("e:/aaa/bbb/c.txt");
System.out.println("文件的绝对路径:"+f.getAbsolutePath());
System.out.println("文件的构造路径:"+f.getPath());
System.out.println("文件名称:"+f.getName());
System.out.println("文件父目录:"+f.getParent());
System.out.println("文件长度:"+f.length());
}
}
绝对路径和相对路径
- 绝对路径:从盘符开始的路径,这是一个完整的路径
- 相对路径:相对于某个目录的路径,这是一个便捷的路径
判断功能的方法
- public boolean exists():此File表示的文件或目录是否真的存在
- public boolean isDirectory():此File表示的是否为目录
- public boolean isFile():此File表示的是否为文件
- public boolean isHidden():此FIle表示的是否为隐藏文件
package com.bdit;
import java.io.File;
/*
File判断相关的方法
*/
public class Demo3 {
public static void main(String[] args) {
File file=new File("E:\\aaa\\bbb");
System.out.println("是否存在:"+file.exists());
System.out.println("是否为目录:"+file.isDirectory());
System.out.println("是否为文件:"+file.isFile());
System.out.println("是否为隐藏:"+file.isHidden());
}
}
创建删除功能的方法
- public boolean createNewFile():如果不存在就创建一个空的文件
- public boolean delete():删除由此File表示的文件或目录
- public boolean mkdir():创建由此File表示的目录
- public boolean mkdirs():创建由此File表示的目录,包括任何必须但不存在的父目录
- public boolean renameTo(File dest):重命名
package com.bdit;
import java.io.File;
/*
创建删除功能的方法
*/
public class Demo4 {
public static void main(String[] args) {
File f1=new File("E:\\aaa\\bbb\\d.txt");
try{
if(!f1.exists()) {
f1.createNewFile();
}
}catch (Exception se){
se.printStackTrace();
}
f1.delete();
File f2=new File("E:\\bdit");
if(!f2.exists()) {
f2.mkdir();
}
f2.delete();
File f3=new File("E:\\java","javase");
f3.mkdirs();
File f4=new File("E:\\bdit");
f4.renameTo(new File("E:\\newbdit"));
}
}
1.4、目录的遍历
- public String[] list():返回一个String数组,表示该File目录中所有的子文件或目录
- public File[] listFiles():返回一个File数组,表示该File目录中所有的子文件或目录
package com.bdit;
import java.io.File;
import java.io.FilenameFilter;
/*
目录的遍历
*/
public class Demo5 {
public static void main(String[] args) {
File f=new File("E:\\");
String[]names=f.list();
for(String n:names){
System.out.println(n);
}
System.out.println("==================================");
File[]files=f.listFiles(new MyFileNameFilter());
for(File ff:files){
System.out.println("------>"+ff.getName());
}
}
}
class MyFileNameFilter implements FilenameFilter{
/**
*
* @param dir 表示当前过滤的File对象
* @param name 表示当前过滤的文件名
* @return
*/
@Override
public boolean accept(File dir, String name) {
if(name.endsWith(".txt")){
return true;
}
return false;
}
}
2、递归
递归:指在当前方法内调用自己的这种现象
递归的分类:
- 递归分为两种,直接递归和间接递归
- 直接递归称为方法自身调用自己
- 间接递归可以理解为:A方法调用B方法,B方法调用C方法,C方法调用A方法
注意事项:
- 递归一定要有条件限定,保证递归能够停止下来,否则会发生内存溢出
- 在递归中虽然有条件限定,但是递归次数不能太多,否则也会发生内存溢出
- 构造方法,禁止递归