一个类,处于JavaAPI中的io包中,需要进行导包。
IO包的作用:对文件进行读(读取文件中的信息内容)和写(将内容保存到文件中)
作用:对文件进行创建,删除,修改等操作。但是不能将信息保存在文件中
File的概念:对一个磁盘路径下的文件夹或文件的路径进行一个抽象的描述
注意:在java中,不管是文件还是文件夹都是叫做File对象
二:File类的常用方法:三:方法讲解isFile 判断是否是文件 isDirectory 判断是否是目录(文件夹) isHidden判断是否是隐藏文件 exists 判断所关联的文件是否存在 createNewFile 创建一个文件 mkdir 创建一个文件夹 getPath 获得文件的路径 getName 获得文件名 getParent是获得文件的上一次父目录的名字(父路径) length获得文件长度,以字节为单位 lastModified获得文件的最后修改时间 返回类型为long delete删除指定路径的文件(不能删除不能为空的文件夹) list 获得文件夹下面所有文件的名字 listFile 是获得文件夹下面的所有文件对象 listRoots获得当前系统的盘符
通过File(String path);来构建一个File对象以此来描述电脑上的某一个文件或文件夹信息
File f1 = new File("D:\hello");
判断文件或文件夹是否存在?
if(f1.exists()) {//true
System.out.println("已存在"+f1.exists());
}else {
System.out.println("不存在"+f1.exists());
}
如果使用exists方法判断文件不存在 那么使用创建的方法来创建文件
if(!f1.exists()) {
boolean b = f1.createNewFile();
if(b == true) {
System.out.println("创建成功");
}else {
System.out.println("已创建");
}
}else {
System.out.println("已存在了");
}
给定一个指定路径的File对象,来创建文件夹
if(!f1.exists()) {
//创建文件夹
f1.mkdir();
System.out.println("创建文件夹成功");
}
D盘下创建一个文件夹a b c d e f g
File f2 = new File("D:\a\b\c\d\e\f\g");
多级文件夹创建 mkdirs
if(!f2.exists()) {
f2.mkdirs();
}
注意:delete删除方法 删除文件可以
但是删除文件夹时,该文件夹必须是空的。
File对象中常用的方法(获取功能)
File file = new File ("D:\Zking_course\ZKINGZZ商城数据库.xmind");
System.out.println(file.getName());//获取文件名称
System.out.println(file.getAbsolutePath());//获取文件的绝对路径
System.out.println(file.getPath());//获取路径
System.out.println(file.getParent());//获取父级路径
System.out.println(file.length());//字节数
//获取最后的修改时间
long time = file.lastModified();//这个毫秒值是1970年1月1日到当前系统时间的毫秒差
Date date = new Date(time);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss:SSS");
String format = sdf.format(date);
System.out.println("该文件最后修改的时间为: "+format);
File对象的常用功能(判断功能)
File file = new File ("D:\Zking_course\ZKINGZZ商城数据库.xmind");
System.out.println(file.isFile());//判断是否为文件?
System.out.println(file.isDirectory());//判断是否为文件夹
System.out.println(file.isHidden());//判断是否为隐藏文件
获取某个目录下的所有文件名
File file = new File("D:\");
String[] names = file.list();
for (String name : names) {
System.out.println(name);
}
获取某个目录下的所有文件信息
File file = new File("D:\");
File files[] = file.listFiles();
for (File file2 : files) {
System.out.println(file2.getName()+"----"+file2.length());
}
获取电脑上的所有磁盘
File[] listRoots = File.listRoots();
for (File file : listRoots) {
System.out.println(file.getPath());
}
三:递归
递归:适用于Java的方法
核心:方法调用方法本身
递归的方式实现1+2+3...+100
public int mysum(int num) {//3
if(num == 1) {
return 1;
}else {
return num+mysum(num-1);
}
}
调用定义的递归方法:
Test t = new Test(); System.out.println(t.mysum(100));
使用递归的方式实现斐波那契数列的第21项是多少?
public int sb(int n) {
if(n == 1|| n== 2) {
return 1;
}else {
return sb(n-1) + sb(n - 2);
}
}
Test t = new Test(); System.out.println(t.sb(21));
使用递归的方式实现某个目录下的所有文件(不管里面有多少个子文件夹 都会获取到其中的文件)
public void findFileAll(File file) {
//1.先判断提供的文件对象是否是文件还是文件夹
if(file.isFile()) {//如果是文件
System.out.println(file.getPath());
}else if(file.isDirectory()) {//如果是文件夹
//2.获取该文件夹下所有为文件信息(包括文件夹以及文件)
File[] listFiles = file.listFiles();
if(listFiles == null) {//过滤掉系统文件 没有权限去访问
return;
}
//3.遍历文件信息数组
for (File file2 : listFiles) {
//4.判断文件信息数组中的每一个file2对象是否是文件还是文件夹
//利用递归的思想调用方法本身 再执行判断一次
findFileAll(file2);
}
}
}
Test t = new Test();
File file = new File("D:\我的情书");
t.findFileAll(file);
使用递归的方式实现将某个目录下的所有.txt文件查找出来
public void findTxtAll(File file) {
if(file.isFile()) {
// System.out.println(file.getPath());
//需求:限制文件的输出 只要txt 其他不需要
//先得到文件的名称
String fileName = file.getName();
// System.out.println(fileName);
//筛选: 因为有些系统文件是没有扩展名也没有.
int index = fileName.lastIndexOf(".");
if(index!=-1) {
//截取扩展名 substring
String hz = fileName.substring(index);
// System.out.println(hz);
if(".mp4".equals(hz)) {
System.out.println(fileName);
}
}
}else if(file.isDirectory()) {
File[] listFiles = file.listFiles();
for (File file2 : listFiles) {
findTxtAll(file2);
}
}
}
Test t = new Test();
File file = new File("D:\我的情书");
t.findTxtAll(file);
删除指定目录下的指定文件(.txt)
public void delTxtAll(File file) {
if(file.isFile()) {
// System.out.println(file.getPath());
// 获取文件名
String fileName = file.getName();
int index = fileName.lastIndexOf(".");
if(index!=-1) {
String hz = fileName.substring(index);
if(".txt".equals(hz)) {
file.delete();
}
}
}else if(file.isDirectory()) {
File[] listFiles = file.listFiles();
if(listFiles==null) {
return;
}
for (File file2 : listFiles) {
delTxtAll(file2);
}
}
}
Test t = new Test();
File file = new File("D:\我的情书");
t.delTxtAll(file);



