一、File类基本介绍
java.io.File类是文件和目录路径名的抽象表示,主要用于文件和目录的创建,查找和删除等操作。
系统分隔符
static String pathSeparator 与系统相关的路径分隔符字符,为方便起见,表示为字符串。 Windows为;(分号),Linux为:(冒号)
static char pathSeparatorChar 与系统相关的路径分隔符。(和上一个作用相同)。
static String separator 与系统相关的默认名称 - 分隔符字符,以方便的方式表示为字符串。 Windows为,Linux为/
static char separatorChar 与系统相关的默认名称分隔符。(和上一个作用相同)
public class FileDemo01 {
public static void main(String[] args) {
//静态方法可以直接使用类名.静态方法名调用
String path1=File.pathSeparator;
System.out.println(path1);//输出结果:;
char path2 = File.pathSeparatorChar;
System.out.println(path2);//输出结果:;
String separator1 = File.separator;
System.out.println(separator1);//输出结果:\
char separator2 = File.separatorChar;
System.out.println(separator2);//输出结果:\
}
}
二、File类构造方法
File(File parent, String child):从父抽象路径名和子路径名字符串创建新的 File实例。
parent:父路径,是一个File类对象,可以调用File类中的方法。
child:子路径。
父路径和子路径可以分开写,而且都可以变化,比较灵活,可以调用File类中的方法。
File(String pathname):通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
pathname:字符串路径名称,路径可以以文件结尾,可以以文件夹结尾;路径可以存在,也可以不存在,因为创建 file类对象只是将字符串进行分装,不考虑路径真假情况。
File(String parent, String child);从父路径名字符串和子路径名字符串创建新的 File实例。
parent:父路径。
child:子路径。
父路径和子路径可以分开写,而且都可以变化,比较灵活,返回的是组装好的完整路径。
public class FileDemo02 {
public static void main(String[] args) {
//File(String pathname):通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
//存在的路径,以文件夹结尾
File file1 = new File("D:\\eclipse\\eclipse\\example\\study\\file");
System.out.println(file1);//输出结果:D:\eclipse\eclipse\example\study\file
//存在的路径,以文件结尾
File file2 = new File("D:\\eclipse\\eclipse\\example\\study\\file\\file.txt");
System.out.println(file2);//输出结果:D:\eclipse\eclipse\example\study\file\file.txt
//不存在的路径
File file3 = new File("D:\\abc");
System.out.println(file3);//输出结果:D:\abc
//File(String parent, String child);从父路径名字符串和子路径名字符串创建新的 File实例。
File file4 = new File("D:\\","eclipse\\eclipse\\example\\study\\file\\file.txt");
System.out.println(file4);//输出结果:D:\eclipse\eclipse\example\study\file\file.txt
//变化父路径
File file5 = new File("E:\\","eclipse\\eclipse\\example\\study\\file\\file.txt");
System.out.println(file5);//输出结果:E:\eclipse\eclipse\example\study\file\file.txt
//File(File parent, String child):从父抽象路径名和子路径名字符串创建新的 File实例。
File parent = new File("D:\\");
File file6 = new File(parent,"eclipse\\eclipse\\example\\study\\file\\file.txt");
System.out.println(file6);//输出结果:E:\eclipse\eclipse\example\study\file\file.txt
}
}
三、File类常用获取方法
public String getAbsolutePath():返回当前File类对象字符串形式的绝对路径,不管是相对路径还是绝对路径,此方法均返回绝对路径 。
public String getPath():返回当前File类对象字符串形式的路径,绝对路径返回绝对路径,相对路径则返回相对路径。
public String getName():返回当前File类对象表示的文件或目录名称,路径的结尾部分。
public long length():返回当前File类对象表示的文件长度,以字节为单位文件夹没有长度概念,因此此方法只对文件有用。若给出的文件不存在或者是文件夹,则返回0。
public class FileDemo03 {
public static void main(String[] args) {
// public String getAbsolutePath():返回当前File类对象字符串形式的绝对路径
//绝对路径
File file1 = new File("D:\\eclipse\\eclipse\\example\\study\\file");
String s1 = file1.getAbsolutePath();
System.out.println(s1);//输出结果:D:\eclipse\eclipse\example\study\file
//相对路径
File file2 = new File("file");
String s2 = file2.getAbsolutePath();
System.out.println(s2);//输出结果:D:\eclipse\eclipse\example\study\file
//public String getPath():返回当前File类对象字符串形式的路径
//绝对路径
File file3 = new File("D:\\eclipse\\eclipse\\example\\study\\file");
String s3 = file3.getPath();
System.out.println(s3);//输出结果:D:\eclipse\eclipse\example\study\file
//相对路径
File file4 = new File("file");
String s4 = file4.getPath();
System.out.println(s4);//输出结果:file
// public String getName():返回当前File类对象表示的文件或目录名称
File file5 = new File("D:\\eclipse\\eclipse\\example\\study\\file");
String s5 = file5.getName();
System.out.println(s5);//输出结果:file
File file6 = new File("D:\\eclipse\\eclipse\\example\\study\\file\\file.txt");
String s6 = file6.getName();
System.out.println(s6);//输出结果:file.txt
// public long length():返回当前File类对象表示的文件长度
//获取存在的文件
File file7 = new File("D:\\eclipse\\eclipse\\example\\study\\file\\FileDemo01.java");
long l1 = file7.length();
System.out.println(l1);//输出结果:1085
//获取不存在的文件
File file8 = new File("D:\\eclipse\\eclipse\\example\\study\\file\\FileDemo05.java");
long l2 = file8.length();
System.out.println(l2);//输出结果:0
//获取文件夹长度
File file9 = new File("D:\\eclipse\\eclipse\\example\\study\\file");
long l3 = file9.length();
System.out.println(l3);//输出结果:0
}
}
四、File类常用判断方法
public boolean exists():判断当前file类对象表示的目录或者文件是否存在。
public boolean isDirectory():判断当前file类对象是否是目录,判断是否以文件夹结尾。
public boolean isFile():判断当前对象是否是文件,判断是否以文件结尾。
public class FileDemo04 {
public static void main(String[] args) {
// public boolean exists():判断当前file类对象表示的目录或者文件是否存在
//存在的绝对路径
File file1 = new File("D:\\eclipse\\eclipse\\example\\study\\file");
boolean b1 = file1.exists();
System.out.println(b1);//输出结果:true
//不存在的绝对路径
File file2 = new File("D:\\eclipse\\eclipse\\example\\study\\file1");
boolean b2 = file2.exists();
System.out.println(b2);//输出结果:false
//存在的相对路径
File file3 = new File("FileDemo01.java");
boolean b3 = file3.exists();
System.out.println(b3);//输出结果:true
//不存在的相对路径
File file4 = new File("FileDemo10.java");
boolean b4 = file4.exists();
System.out.println(b4);//输出结果:false
// public boolean isDirectory():判断当前file类对象是否是目录
// public boolean isFile():判断当前对象是否是文件,判断是否以文件结尾
File file5 = new File("D:\\eclipse\\eclipse\\example\\study\\file");
boolean b5 = file5.isDirectory();
boolean b6 = file5.isFile();
System.out.println(b5);//输出结果:true
System.out.println(b6);//输出结果:false
// public boolean isFile():判断当前对象是否是文件,判断是否以文件结尾
File file6 = new File("D:\\eclipse\\eclipse\\example\\study\\file\\FileDemo01.java");
boolean b7 = file6.isDirectory();
boolean b8 = file6.isFile();
System.out.println(b7);// 输出结果:false
System.out.println(b8);// 输出结果:true
}
}
五、File类创建删除常用方法
public boolean createNewFile():当且仅当当前文件名称不存在时,创建一个新空白文件,文件名称文件对象创建时构造方法给出
注意:
1.文件不存在,创建文件并返回true,文件已经存在,返回false。
2.此方法只能创建文件,不能创建文件夹。
3.创建文件路径必须存在,绝对路径和相对路径都可以,否则会抛出IO异常。
public boolean delete():删除当前文件对象表示的目录或者文件,可以删除文件和目录。
注意:
1.文件删除成功返回true,文件夹有内容或者路径不存在返回false。
2.此方法直接从硬盘中删除数据,不经过回收站(谨慎使用)
public boolean mkdir():创建当前文件对象表示的目录,单个空文件夹。
注意:
1.文件夹不存在,创建文件夹并返回true,文件已夹经存在,返回false。
2.此方法只能创建文件夹,不能创建文件,不要看文件名,要看文件类型。
3.创建文件路径必须存在,绝对路径和相对路径都可以,路径不存在,不会抛异常。
public boolean mkdirs():创建当前文件对象表示的目录,包括任何必需但不存在的父目录,多级文件夹。
public class FileDemo05 {
public static void main(String[] args) {
// public boolean createNewFile()
//绝对路径
File file1 = new File("D:\\eclipse\\eclipse\\example\\study\\file\\FileDemo01.java");
try {
boolean b1 = file1.createNewFile();//此方法会产生异常,必须进行处理
System.out.println(b1);//已经存在返回false
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//相对路径
File file2 = new File("study\\file\\FileDemo10.txt");
try {
boolean b2 = file2.createNewFile();//此方法会产生异常,必须进行处理
System.out.println(b2);//不存在,创建文件并返回true
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// public boolean mkdir():创建当前文件对象表示的目录,单个文件夹
// public boolean mkdirs():创建当前文件对象表示的目录,包括任何必需但不存在的父目录,多级文件夹
File file3 = new File("study\\file\\file2");
boolean b3 = file3.mkdir();
System.out.println(b3);//不存在,创建文件夹并返回true
File file4 = new File("study\\file\\file1");
boolean b4 = file4.mkdir();
System.out.println(b4);//存在,返回false
File file5 = new File("study\\file\\file.txt");//虽然名称是文件名,但是创建的仍然是文件夹
boolean b5 = file5.mkdir();
File file6 = new File("study\\file\\file3\\1\\2\\3\\4");
//boolean b6 = file6.mkdir();只能创建单级文件夹,多级文件夹使用下面的方法进行创建
boolean b6 = file6.mkdirs();
System.out.println(b6);//不存在,创建多级文件夹并返回true
// public boolean delete():删除当前文件对象表示的目录或者文件
boolean b7 = file6.delete();
System.out.println(b7);//删除文件夹成功,返回true
boolean b8 = file2.delete();
System.out.println(b8);//删除文件成功,返回true
}
}
六、File类遍历目录方法
public String[] list():返回一个String类型的数组,表示该File目录下的所有目录或子文件。
public File[] listFile():返回一个File数组,表示该File目录中的所有文件或目录。
注意事项:
1.这两个方法只是遍历创建file对象时构造方法给出的目录。
2.如果构造方法给出的路径不存在或者是一个文件,都会抛出空指针异常。
3.这两个方法可以遍历出隐藏的文件夹或者文件(没有秘密)。
public class FileDemo06 {
public static void main(String[] args) {
//存在的路径
File file1 = new File("D:\\eclipse\\eclipse\\example\\study\\file");
String[] s1 = file1.list();
for(String s:s1){
System.out.print(s+" ");//输出结果:file.txt file1 file2 file3 FileDemo01.java FileDemo02.java FileDemo03.java FileDemo04.java FileDemo05.java FileDemo06.java
}
System.out.println();
//不存在的路径
// File file2 = new File("D:\\eclipse\\eclipse1\\example\\study\\file");
// String[] s2 = file2.list();
// for(String s:s2){
// System.out.print(s+" ");//抛出NullPointerException
// }
//存在的路径,但是访问的是文件
// File file3 = new File("D:\\eclipse\\eclipse\\example\\study\\file\\1.txt");
// String[] s3 = file3.list();
// for (String s : s3) {
// System.out.print(s + " ");//抛出NullPointerException
// }
// public File[] listFile():返回一个File数组,表示该File目录中的所有文件或目录
File file2 = new File("D:\\eclipse\\eclipse\\example\\study\\file");
File[] f = file2.listFiles();
for(File F:f){
System.out.print(F+" ");//输出结果:D:\eclipse\eclipse\example\study\file\file.txt D:\eclipse\eclipse\example\study\file\file1 D:\eclipse\eclipse\example\study\file\file2 D:\eclipse\eclipse\example\study\file\file3 D:\eclipse\eclipse\example\study\file\FileDemo01.java D:\eclipse\eclipse\example\study\file\FileDemo02.java D:\eclipse\eclipse\example\study\file\FileDemo03.java D:\eclipse\eclipse\example\study\file\FileDemo04.java D:\eclipse\eclipse\example\study\file\FileDemo05.java D:\eclipse\eclipse\example\study\file\FileDemo06.java
}
}
}