概念
文件和目录路径名的抽象表示形式。
构造方法
//构造方法1
File dir = new File("F://Test");
//构造方法2
File file = new File(dir,"1.txt");
file.createNewFile();
//构造方法3
File file1 = new File("F://Test","2.txt");
file1.createNewFile();
结果:
createNewFile(创建文件)
使用方法:
//一参数构造方法
File file = new File("F://Test.txt");
file.createNewFile();
注意:需要抛出异常,因为操作权限的原因可能会触发异常。
throws IOException
会返回一个布尔类型的返回值,true如果指定的文件不存在且已成功创建; false如果指定的文件已存在。
File file = new File("F://Test.txt");
boolean flag = file.createNewFile();
System.out.println(flag);
结果:
mkdir(创建文件夹)
File dir = new File("F://Test");
dir.mkdir();
结果:再F盘下创建出来文件夹Test
注意:同样会有返回值true/false,true代表创建成功,false代表创建失败。也需要抛出异常。
File dir = new File("F://Test");
boolean test = dir.mkdir();
System.out.println(test);
如果需要创建多层目录需要使用midirs方法
File dir = new File("F://Test1/t/t/t");
boolean test = dir.mkdirs();
System.out.println(test);
结果:
delete(删除)
File file1 = new File("F://Test","2.txt");
//删除
file.delete();
结果:1.txt被删除
getAbsolutePath(获取文件路径)
File dir = new File("F://Test");
System.out.println(dir.getAbsolutePath());
结果:获得对象绝对路径字符串
getPath
System.out.println(dir.getPath());
注意:返回的是定义时的路径,可能是相对路径,也可能是绝对路径,这个取决于定义时用的是相对路径还是绝对路径。如果定义时用的是绝对路径,那么使用getPath()返回的结果跟用getAbsolutePath()返回的结果一样
getName(获取文件名称)
File dir = new File("F://Test");
System.out.println(dir.getName());
结果:
getParent(获取父文件夹地址)
概念:
返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
File dir = new File("F://Test//Test2");
System.out.println(dir.getParent());
结果:
getParentFile(返回父对象)
File dir = new File("F://Test//Test2");
File test = dir.getParentFile();
注意:getParent返回的是String类型,getParentFile返回的是File类型。
length(文件大小为几字节)
File dir = new File("F://Test");
System.out.println(dir.length());
结果:返回对象文件大小(字节)
exists(判断文件是否存在)
File dir = new File("F://Test");
System.out.println(dir.exists());
结果:存在返回true,不存在返回false
renameTo(文件换位置换名字)
//原文件的位置
File dir = new File("F://Test");
//要转移的位置和名字
File dir2 = new File("F://Test2");
dir.renameTo(dir2);
listFile(获取文件夹中所有文件)
File dir = new File("F://Test");
dir.listFiles();
例如一个文件夹中有20个文件和10个文件夹,调用该方法就会返回一个长度为30的File数组。
list(返回某个目录下的所有文件和目录的文件名)
File dir = new File("F:\\Test1");
for (String s: dir.list()) {
System.out.println(s);
}
结果:
路径分隔符
不同系统分隔符不一样,Java提供了统一的分隔符字段
文件遍历案例
import java.io.File;
import java.io.IOException;
public class FileTest {
public static void main(String[] args) throws IOException {
File file = new File("f:");
File[] files = file.listFiles();
find(files);
}
public static void find(File[] files) {
if (files != null && files.length > 0) {
for (File file:files) {
if (file.isFile()){
if (file.getName().endsWith(".jpg")){
System.out.println("找到jpg文件:"+file.getAbsolutePath());
}
}else {
File[] test = file.listFiles();
find(test);
}
}
}
}
}
注意:files != null && files.length > 0的files !=null不能删掉,因为如果files为空,调用length会出现空指针异常。
files = null;
int a = files.length;
FileFilter过滤器
方法1
AVI test = new AVI();
//接收的文件在过滤器中筛选
File[] files = file.listFiles(test);
//需要继承FileFilter
static class AVI implements FileFilter {
@Override
public boolean accept(File pathname) {
//限制条件
if (pathname.getName().endsWith(".mp4"))
//true表示可以进数组,文件符合要求
return true;
//不符合要求的文件
return false;
}
}
方法2
File file = new File("f:");
FileFilter test = new FileFilter() {
@Override
public boolean accept(File pathname) {
if (pathname.getName().endsWith(".avi"))
return true;
return false;
}
};
File[] files = file.listFiles(test);
方法3
File file = new File("f:");
File[] files = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if (pathname.getName().endsWith(".avi"))
return true;
return false;
}
});