电脑里面使用的东西/文件分为几种?文件和文件夹。
文件夹里面放什么?文件:视频、音乐、软件、文档、excel表格、ppt....
在java程序里面?文件/文件夹=File。
2、File简介概述:java.io.file类是文件和目录(文件夹)路径名的抽象表示,主要用于文件和目录的创建,查找,判断,对文件夹进行遍历,获取文件大小和删除等操作。
-
java把电脑中的文件和文件夹封装为了一个File类,我们可以使用File类对文件/文件夹进行操作。
-
file类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法。
注:操作路径不可写死(系统不止一个),Windows系统写死没问题,Linux 系统
D:卓京S21.高级API (Windows系统写法)
//具体写法如下: "D:“+File.separtor+”卓京“+File.separtor+”S2“+File.separtor+”1.高级API" //整体路径是一个字符串,所有整体路径用字符串表示,里面的变为“+File.separtor+”
| static | String | pathSeparator | 路径分隔符,表一个字符串; windows:分号“;”;linux:冒号“:” |
| static | char==String | pathSeparatorChar | 因public static final String pathSepartor =""+pathSepartorChaar;所以结果也是Striing |
| static | String | separtor | 默认名称分隔符/文件名称分隔符,表一个字符串String类型 Windows:反斜杠“”;Linux:正斜杠“/” |
| static | char==String | separtorChar | 同pathSepartorChar一样 |
绝对路径:一个完整的路径,以盘符开始的路径(C: D:)
相对路径:相对于本身的路径
-
路径不区分大小写
-
路径中文件名称分隔符Windows使用反斜杠,反斜杠是转义字符,两个反斜杠代表一个普通的反斜杠
-
路径可是绝对路径也可是相对路径
-
路径可存在也可不存在
-
创建File对象,只是把字符串路径封装为File对象,不考虑路径的真假情况
File file = new File("D:\其余\最大的敌人是自己.pptx");
6、判断File对象是文件/文件夹?
6.1:判断File是不是文件夹(Directory) 是文件夹/目录:isDirectory();
File file = new File("D:\其余\最大的敌人是自己.pptx");
boolean f = file.isDirectory();//判断file是否为文件夹,返回类型为boolean
System.out.println(f);//打印该对象是否为文件夹,结果:false不存在
6.2:判断 file 是不是文件?是文件:isFile();
File file = new File("D:\其余\最大的敌人是自己.pptx");
boolean f = file.isFile();//判断file是否为文件,返回类型为boolean
System.out.println(f);//打印该对象是否为文件,结果://true存在
7、判断File对象是否存在:exists()?不存在原因:没有这个对象
File file = new File("D:\其余\最大的敌人是自己.pptx");
boolean f = file.exists();//判断file对象是否存在,返回类型为boolean
System.out.println(f);//打印该对象是否存在,结果:true存在
8、创建文件,先判断该文件对象是否存在,不存在则创建;存在,则不创建。createNewFile()
注:if后面如果是一条输出语句花括号可省略,如下代码:
if (file.exists()) {
System.out.println("文件已存在!")
else {
System.out.println("创建成功!")
}
9、创建文件夹,先判断该文件对象是否存在,不存在则创建;存在,则不创建。exists()
File file = new File("D:\其余2");//定义一个我们要创建的新的文件对象
//判断file对象是否存在
if(file.exists()) {//如果存在
System.out.println("文件存在,不用创建!");
}else {//不存在
boolean f = file.mkdir();//创建新文件夹为file,返回类型为boolean型
//判断file是否创建成功/存在
if(f) {//如果存在
System.out.println("创建成功!");
}else {//不存在
System.out.println("创建失败!");
}
}
10、获取File对象相关属性(路径/父路径/文件大小/文件名字/最后修改时间);
10.1:获取文件的完整/全路径:getPath
String path = file.getPath();//获取file的路径,返回类型为String System.out.println(path);//打印路径10.2:获取文件的大小/长度/尺寸:length();
System.out.println(file.length());//获取file文件的大小并打印10.3:获取文件名字:getName();
System.out.println(file.getName());//获取该文件的名字并打印10.4:获取文件最后修改时间,获取文件最后修改的时间:lastModifile();
System.out.println(new Date(file.lastModified()).toLocaleString());11、删除文件/文件夹; 11.1:删除文件
File file = new File("D:\其余\新笔记本.txt");//定义要删除的文件对象路径
boolean f = file.delete();//删除f==file文件,返回boolean类型
//判断f是否删除成功
if (f) {//成功
System.out.println("删除成功!");
} else {//不成功
System.out.println("删除失败!");
}
11.2:删除文件夹(必须保证是空文件夹)
File file = new File("D:\其余2");//定义要删除的文件夹:其余2
boolean f = file.delete();//删除f==file文件夹,返回类型为boolean类型
//判断是否删除成功
if (f) {//成功
System.out.println("删除成功!");
} else {//不成功
System.out.println("删除失败!");
}
12、获取文件夹里面的文件(名字/对象);
12.1:获取文件夹里面存放的所有文件名字:file.list();
File file = new File("D:\其余");//定义一个我们要文件的文件夹
String[] f=file.list();//获取file文件夹的所有文件,返回一个String类型的数组
for (String str : f) {//遍历整个文件f
System.out.println(s);//打印该文件夹的所有文件
}
12.2:获取文件夹里面存放的所有文件对象:listFiles();
File file=new File("D:\其余");//定义我们要获取所有文件的文件夹对象
//获取file文件机夹里面所有的文件对象(路径/文件名),返回一个对象数组
File[] listFiles = file.listFiles();
for (File file2 : listFiles) {//遍历该文件夹所有对象
打印该文件夹里所有文件对象的父路径和名字
System.out.println("路径:"+file2.getParent()+",名字:"+file2.getName());
System.out.println(file2);//默认打印该文件夹文件对象的所有父路径
}
12.3:删除文件夹里的所有文件,除文件夹(里面有内容)
File file=new File("D:\其余2");//定义我们要删除所有文件的文件夹路径
File[] listFiles = file.listFiles();//获取file文件夹里面的所有文件对象,返回一个对象数组
for (File file2 : listFiles) {//遍历该文件夹所有文件对象
//删除该文件夹里所有文件对象,不包括文件夹里面有内容的文件夹,若是空文件夹便可删除
file2.delete();
}
13、获取文件夹里所有文件对象:一个个判断获取方法/递归获取方法
13.1:一个个判断获取铺垫:获取 “测试” 文件夹里面的所有文件对象(包括里面嵌套的文件夹里面的文件对象)
File file=new File("D:\其余2");//定义要获取所有文件对象的文件夹
File[] listFiles = file.listFiles();// 只是获取到 测试 文件夹里面的文件对象
for (File fa : listFiles) {// fa:测试 文件夹里面的文件对象。fa可能是文件也可能是文件夹
if(fa.isFile()) {// 如果 fa是具体的文件
System.out.println(fa.getName());
}else {//否则 fa 是文件夹
File[] listFiles2 = fa.listFiles();//获取到 fa 文件夹里面的文件对象
for (File fb : listFiles2) {// fb:可能是文件也可能是文件夹
if(fb.isFile()) {//如果是文件
System.out.println(fb.getName());
}else {//否则 fb 是文件夹
File[] listFiles3 = fb.listFiles();//获取到 fa 文件夹里面的文件对象
}
}
}
}
13.2:递归:获取 测试 文件夹里面的所有文件对象(包括里面嵌套的文件夹里面的文件对象)
package com.zking.test;
import java.io.File;
import java.io.IOException;
public class Test {
public static void getAllFile(File file) {
File[] listFiles = file.listFiles();//获取file文件夹里面的所有文件对象,返回一个文件对象数组
for (File fa : listFiles) {//遍历该文件夹
if (fa.isFile()) {// 如果是文件
System.out.println("文件名:" + fa.getName());//打印该文件名
} else {// 文件夹
getAllFile(fa);// 调用自己本方法
}
}
}
public static void main(String[] args) {//mian方法
File file = new File("D:\其余2");//定义要获取所有文件的文件夹
getAllFile(file);//调用getAllFile方法,把要获取的文件夹对象传进去
}
}
14、通过递归清空文件夹里面的所有文件对象,并删除文件夹。
public class Temp {
public static void Allfile(File f) {
if(f.isFile()) {
System.out.println(f.delete()+"删除成功");
}else {
File[] x=f.listFiles();
for (File f1 : x) {
Allfile(f1);
}
}
f.delete();
}
public static void main(String[] args) throws Exception {
File file = new File("D:\其余2");
Allfile(file);
}
15、通过递归求裴波拉数;1,1,2,3,5,8,13......
package com.zking.test;
public class Tes {
// 通过递归求 x 位的裴波拉数
public static int getP(int x) {
if (x == 1 || x == 2) {// 如果是第1个或者第2个数,则返回1
return 1;//返回1
} else {// 从第三个数开始,等于前两个数之和。
return getP(x - 1) + getP(x - 2);//把该位数的前1位数和前2位数相加并返回
}
}
public static void main(String[] args) {//mian方法
System.out.println(getP(8));//调用该方法传入要求的底8位裴波拉数
}
}
16、获取系统盘符;
File[] file = File.listRoots();//获取file文件的系统盘符
for (File file2 : file) {//遍历该文件对象
System.out.println(file2);//打印
}
17、获取File的功能
-
getAbsolutePath();返回该File的绝对路径名字符串;无论路径是绝对路径还是相对路径,都返回的是绝对路径
-
getPath(); 将该File转换为路径名字符串;File里传入什么(相对/绝对)路径则返回什么路径
-
getName();返回File路径(绝对/相对)结尾的文件/文件夹的名称
-
getLength(); 返回File表示的文件的长度/大小,以字节为单位
-
文件夹无大小概念,不可获取文件夹的大小,返回0;
-
如File中给出的路径不存在,那么length方法返回0;
-
返回类型都是boolean类型
-
public boolean exists();判断该File表示的文件/文件夹是否存在
-
public boolean isDirectory(); 判断该File表示的是否以文件夹/目录结尾
-
public boolean isFile();判断该File表示的是否以文件结尾
-
public boolean createNewFile();创建一个该文件名称不存在的一个新的空文件;
-
创建文件时的文件路径必须存在,否则会抛出异常(IOException)
-
若使用createNewFile创建文件夹(新建文件夹/2),虽然会创建成功,但实际上不是一个文件夹,还是可以通过一些软件打开并往里面书写内容
-
-
public boolean delete();删除该File表示的文件/文件夹;
-
文件夹里有内容则不会删除,返回false
-
路径不存在返回false
-
delete方法是直接在硬盘删除文件,不走回收站
-
-
public boolean mkdir();创建该File表示的文件夹(单级)
-
给出路径不存在返回false
-
若创建文件,但实际上创建的还是一个文件夹
-
-
public boolean mkdirs();创建该File表示的文件夹,包括任何必须但不存在的父目录(多级)
-
给出路径不存在返回false
-
若创建文件,但实际上创建的还是一个文件夹
-
给出一个错误路径以及文件夹不会抛出异常(true),路径不存在,不会创建
-



