File类
一、概述
1. java.io.File类
- 文件和目录名的抽象表示方式
- Java把电脑中的文件和文件夹(目录)封装为了一个File类
- 我们可以使用File类对文件和文件夹进行操作
2. 我们可以使用File类的方法
创建一个文件/文件夹
删除文件/文件夹
获取文件/文件夹
判断文件/文件夹是否存在
对文件夹进行遍历
获取文件的大小
File类是一个与系统无关的类,任何操作系统都可以使用这个类
重点:
file:文件
directory:文件夹/目录
path:路径
二、File类的静态成员变量
1. static String pathSeparator:与系统有关的路径分隔符,为了方便,他被表示为一个字符串
2、static char pathSeparatorChar: 与系统有关的路径分隔符
3、static String separator :与系统有关的默认名称分隔符,为了方便,他被表示为一个字符串
4、static char separatorChar: 与系统有关的默认名称分隔符
public class FileDemo {
public static void main(String[] args) {
String pathSeparator=File.pathSeparator;
System.out.println(pathSeparator);//路径分隔符 windows:分号 Linux:冒号
String separator= File.separator;
System.out.println(separator);//文件名称分隔符 windows:反斜杠\ Linux:正斜杠/
}
}
;
\
Process finished with exit code 0
三、路径
-
绝对路径:是一个完整的路径,以盘符(C:,D:)开始的路径 C:\a.txt
-
相对路径:是一个简化的路径
相对是指相对于当前目录的根目录,如果使用当前目录的根目录,路径可以简化:
C:\a.txt---->简化为 a.txt
注意:
- 路径不区分大小写
- 路径名称中的分隔符windows使用反斜杠,反斜杠是转移字符,两个反斜杠代表一个普通的反斜杠
四、File类的构造方法
-
File(String pathname) 通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例。
- String pathname:字符串的路径名称
-
路径可以以文件结尾,也可以以文件夹结尾,路径可以是相对路径,也可以是绝对路径,路径可以存在,也可以不存在。创建File对象, 只是把字符串路径封装为File对象,不考虑路径的真假情况
package File;
import java.io.File;
public class FileDemo2 {
public static void main(String[] args) {
show01();
}
private static void show01(){
// String pathname:字符串的路径名称
File f1=new File("C:\\a.txt");
System.out.println(f1);
}
}
C:\a.txt
Process finished with exit code 0
-
File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
- 把路径分为两部分:parent:父路径和child:子路径
public class FileDemo2 {
public static void main(String[] args) {
show02("C:\\","a.txt");
}
private static void show02(String parent, String child){
File f2=new File(parent,child);
System.out.println(f2);
}
}
C:\a.txt
- File(File parent, String child);通过给定的父抽象路径名和子路径名字符串创建一个新的File实例。
五、File类获取功能的方法
- public String getAbsolutePath() 返回File绝对路径名的名字符串。
无论路径是绝对的还是相对的,返回的都是绝对的
public class FileDemo3 {
public static void main(String[] args) {
show01();
}
/*
public String getAbsolutePath() 返回File绝对路径名的名字符串。
无论路径是绝对的还是相对的,返回的都是绝对的
*/
private static void show01() {
//绝对路径
File f1=new File("D:\\IDEA\\Javaproject\\a.txt");
String absolutePath1=f1.getAbsolutePath();
System.out.println(absolutePath1);
//相对路径
File f2=new File("a.txt");
String getpath= f2.getAbsolutePath();
System.out.println(getpath);
}
}
D:\IDEA\Javaproject\a.txt
D:\IDEA\Javaproject\a.txt
Process finished with exit code 0
- public String getName() 返回由此抽象路径名表示的文件或目录的名称。
获取的是构造方法传递路径的结尾部分(文件/文件夹)
public class FileDemo3 {
public static void main(String[] args) {
show03();
}
private static void show03() {
File f1=new File("D:\\IDEA\\Javaproject\\a.txt");
String name1=f1.getName();
System.out.println(name1);
File f2=new File("D:\\IDEA\\Javaproject");
String name2=f2.getName();
System.out.println(name2);
}
}
a.txt
Javaproject
- public String getPath() 将路径名转换为一个路径名字符串。
toString方法调用的就是getpath方法
public class FileDemo3 {
public static void main(String[] args) {
show02();
}
private static void show02() {
File f1=new File("D:\\IDEA\\Javaproject\\a.txt");
File f2=new File("a.txt");
String path1=f1.getPath();
System.out.println(path1);
String path2=f2.getPath();
System.out.println(path2);
//toString方法调用的就是getpath方法
System.out.println(f1.toString());
}
}
D:\IDEA\Javaproject\a.txt
a.txt
D:\IDEA\Javaproject\a.txt
- public long length() :返回由此File表示的文件长度以字节为单位
- 注意:
文件夹没有大小概念,不能获取文件夹大小
如果构造方法中给出的路径不存在,那么length方法返回0.
- 注意:
public class FileDemo3 {
public static void main(String[] args) {
show04();
}
private static void show04() {
//文件f1路径不存在
File f1=new File("D:\\IDEA\\Javaproject\\a.txt");
File f2=new File("C:\\Users\\dell\\Documents\\WeChat Files\\All Users\\a.jpg");
long length1=f1.length();
long length2=f2.length();
System.out.println("文件f1:"+length1+"字节");
System.out.println("文件f2:"+length2+"字节");
}
}
文件f1:0字节 //文件f1路径不存在
文件f2:6111字节
-
public String getParent() 返回此抽象路径名的父路径名的路径名字符串,如果此路径名没有指定父目录,则返回
null。 -
public File getParentFile() 返回此抽象路径名的父路径名的抽象路径名,如果此路径名没有指定父目录,则返回null。
六、File判断功能的方法
- public boolean exists() 测试此抽象路径名表示的文件或目录是否存在。
public class FileDemo4 {
public static void main(String[] args) {
show01();
}
private static void show01() {
//f1路径不存在,f2路径存在
File f1=new File("D:\\IDEA\\Javaproject\\a.txt");
boolean t1=f1.exists();
System.out.println(t1);
File f2=new File("C:\\Users\\dell\\Documents\\WeChat Files\\All Users\\a.jpg");
boolean t2=f2.exists();
System.out.println(t2);
}
}
false
true
-
public boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录。
- 用于判断构造方法给定的路径是否以文件夹结尾 是:true 否:false
-
public boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件。
- 用于判断构造方法给定的路径是否以文件结尾 是:true 否:false
-
注意:
电脑硬盘中只有文件/文件夹,两个方法互斥
这两个方法使用的前提,路径必须是存在的,否则都返回false
public class FileDemo4 {
public static void main(String[] args) {
show01();
}
private static void show01() {
File f1=new File("C:\\Users\\dell\\Documents\\WeChat Files\\All Users");
boolean t1=f1.isFile();
boolean t3=f1.isDirectory();
System.out.println("f1是否是一个标准文件:"+t1);
System.out.println("f1是否是一个目录:"+t3);
File f2=new File("C:\\Users\\dell\\Documents\\WeChat Files\\All Users\\a.jpg");
boolean t2=f2.isFile();
boolean t4=f2.isDirectory();
System.out.println("f2是否是一个标准文件:"+t2);
System.out.println("f2是否是一个目录:"+t4);
}
}
f1是否是一个标准文件:false
f1是否是一个目录:true
f2是否是一个标准文件:true
f2是否是一个目录:false
七、File创建删除功能的方法
- public boolean createNewFile() throws IOException
当且仅当不存在具有路径名指定的名称的文件时,原子地创建由此抽象路径名指定的一个新的空文件。建文件的路径必须存在,否则会抛出异常- createNewFile()声明抛出IOException异常,我们调用这个方法必须处理异常,要么throws,要么try-catch
- 如果要创建的文件已存在,则返回false,如果要创建的文件不存在,则返回true,并创建文件
public class FileDemo4 {
public static void main(String[] args) {
show01();
}
private static void show02() throws IOException {
File f2=new File("C:\\Users\\dell\\Documents\\WeChat Files\\All Users\\1.txt");
boolean b1=f2.createNewFile();
System.out.println(b1);
}
}
true
- public boolean delete() 删除此抽象路径名表示的文件或目录。
- public boolean mkdir() 创建此抽象路径名指定的目录,可以创建单级文件夹
- public boolean mkdirs() 创建此抽象路径名指定的目录,包括创建必需但不存在的父目录,可以创建单极文件夹,也可以创建多级文件夹
public class FileDemo4 {
public static void main(String[] args) throws IOException {
show03();
}
private static void show03() {
//mkdir()创建单级文件夹
File f1=new File("C:\\Users\\dell\\Documents\\WeChat Files\\All Users\\aaa");
boolean b=f1.mkdir();
System.out.println("b:"+b);
//mkdir()创建多级文件夹
File f2=new File("C:\\Users\\dell\\Documents\\WeChat Files\\All Users\\aaa\\bbb\\ccc");
boolean b1=f2.mkdir();
System.out.println("b1:"+b1);
//mkdirs()创建多级文件夹
File f3=new File("C:\\Users\\dell\\Documents\\WeChat Files\\All Users\\aaa\\bbb\\ccc");
boolean b2=f2.mkdirs();
System.out.println("b2:"+b2);
}
b:true
b1:false
b2:true
八、File类目录的遍历功能
- public String[] list():返回由此抽象路径名所表示的目录中的文件和目录的名称所组成字符串数组。
public class FileDemo5 {
public static void main(String[] args) {
show();
}
private static void show() {
File f=new File("C:\\Users\\dell\\Documents\\WeChat Files");
String[]arr=f.list();
for(String filename:arr){
System.out.println(filename);
}
}
}
All Users
Applet
wxid_iv0otzovs41322
- public File[] listFiles():返回一个抽象路径名数组,这些路径名表示此抽象路径名所表示目录中的文件。
public class FileDemo5 {
public static void main(String[] args) {
show1();
}
private static void show1() {
File f=new File("C:\\Users\\dell\\Documents\\WeChat Files");
File[] files = f.listFiles();
for(File filename:files){
System.out.println(filename);
}
}
}
C:\Users\dell\Documents\WeChat Files\All Users
C:\Users\dell\Documents\WeChat Files\Applet
C:\Users\dell\Documents\WeChat Files\wxid_iv0otzovs41322
注意:
list方法和listFiles方法便利的是构造方法中给出的目录
如果构造方法中给出的路径不存在,会抛出空指针异常
如果构造方法中给出的路径不是一个目录,会抛出空指针异常