一,概述
java.io.File类是文件和目录路径名的抽象表示形式,java把电脑中的文件/文件夹封装为一个File类。我们可以使用File类对文件和文件夹进行操作:创建、删除、获取、判断是否存在、对文件夹进行遍历及获取文件大小。
注意:File类是一个与系统无关的类,任何操作系统都可以使用这个类中的方法。
二,静态成员变量
static String pathSeparator: 路径分隔符,字符串形式。
static Char pathSeparatortoChar: 路径分隔符的字符形式。
static String Separator: 文件名称分隔符的字符串表示形式。
static Char SeparatortoChar: 文件名称分隔符的字符串表示形式。
import java.io.File;
public class DemoFileStaticValue {
public static void main(String[] args) {
String sep = File.separator;
System.out.println("文件夹分隔符(字符串形式):"+sep); //文件夹分隔符(字符串形式):\ (linux系统是 /)
char sepChar = File.separatorChar;
System.out.println("文件夹分隔符(字符形式):"+sepChar);//文件夹分隔符(字符形式):\
String pathsep = File.pathSeparator;
System.out.println("路径分隔符(字符串形式):"+pathsep);//路径分隔符(字符串形式):; (linux系统是 :)
char pathsepchar = File.pathSeparatorChar;
System.out.println("路径分隔符(字符形式):"+pathsepchar);//路径分隔符(字符形式):;
}
}
路径注意事项:
1,路径不区分大小写;
2,路径中的文件名称分隔符,window使用反斜杠,反斜杠是转义字符,两个反斜杠代表一个普通的反斜杠。
二,File类中获取功能的方法
1,String getAbsolutePath(): 返回此File的绝对路径字符串表示形式。
2,String getPath(): 将File对象转换为路径字符串,返回构造方法中的路径,File对象中的toString中调用此方法。
3,String getName(): 返回此File表示的文件或目录名称。
4,String length():返回此File表示的文件大小,以字节为单位。若构造方法中路径不存在,返回0.
import java.io.File;
public class DemoFileGet {
public static void main(String[] args) {
show1();
show2();
show3();
show4();
}
private static void show4() {
File f1 = new File("E:\\python代码\\数据结构\\单链表.py");
long l1 = f1.length();
System.out.println(l1);//2419
File f2 = new File("E:\\python代码\\数据结构\\1.txt");
long l2 = f2.length();
System.out.println(l2);//0
}
private static void show3() {
//E:\python代码\数据结构
File f1 = new File("E:\\python代码\\数据结构\\单链表.py");
String name = f1.getName();
System.out.println(name);//单链表.py
File f2 = new File("E:\\python代码\\数据结构");
String name2 = f2.getName();
System.out.println(name2);//数据结构
}
private static void show2() {
File f1 = new File("E:\\java视频\\02Java语言进阶\\day08_File类、递归\\video");
File f2 = new File("video");
System.out.println(f1.getPath());//E:\java视频\02Java语言进阶\day08_File类、递归\video
System.out.println(f2.getPath());//video
System.out.println(f2.toString());//video
}
private static void show1() {
File f1 = new File("E:\\java视频\\02Java语言进阶\\day08_File类、递归\\video");
File f2 = new File("video");
String absolutepath = f1.getAbsolutePath();
System.out.println(absolutepath);//E:\java视频\02Java语言进阶\day08_File类、递归\video
System.out.println(f2.getAbsolutePath());//D:\IdealProjects\demo\video
}
}
三,判断功能的方法
1,boolean exists():文件或文件夹存在,则返回true。
2,boolean isDirectory():判断此File表示的是否为文件夹。
3,boolean isFile(): 判断此File表示的是否为文件。
注意:isDirectory()和isFile()方法适用前提,路径必须是存在的,否则返回false。
import java.io.File;
public class DemoFileJudge {
public static void main(String[] args) {
File file = new File("C:\\AppData\\Roaming\\miniconfig\\history.ini");
if(file.exists()){
System.out.println(file.isDirectory()); //false
System.out.println(file.isFile()); //true
}
File file2 = new File("C:\\AppData\\Roaming\\miniconfig\\history2.ini");
System.out.println(file2.isDirectory()); //false
System.out.println(file2.isFile()); //false
}
}
四,创建删除功能的方法
1,boolean createNewFile(): 当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。创建的文件路径和名称在构造方法中给出。
返回值:
true: 文件不存在,创建文件成功,返回true。
false:文件存在,不会创建。
注意:
1,此方法只能创建文件,不能创建文件夹。
2,创建文件的路径必须存在,否则抛出异常。
2,boolean mkdir():创建单级空文件夹。
boolean mkdirs():可创建单级空文件夹、也可创建多级文件夹。
返回值:
true:文件夹不存在,创建文件夹,返回true。
false:文件夹存在,不会再创建,返回false;构造方法中给出的路径不存在,返回false。
注意:此方法只能创建文件夹,不能创建文件。
3,boolean delete(): 删除由此File表示的文件或者目录。
返回值:
true:文件/文件夹删除成功,返回true。
false: 文件夹有内容文件,不会删除,返回false;构造方法中路径不存在,返回false。
注意:delete()方法直接在硬盘删除文件/文件夹,不走回收站,删除需谨慎。
import java.io.File;
import java.io.IOException;
public class DemoCreateFile {
public static void main(String[] args) throws IOException {
// show01();
// show02();
// show03();
show04();
}
private static void show04() {
File file2 = new File("D:\\IdealProjects\\demo\\src\\day5_11\\文件夹");
boolean b2 = file2.delete();
System.out.println(b2); //true
File file1 = new File("D:\\IdealProjects\\demo\\src\\day5_11\\1.txt");
boolean b1 = file1.delete();
System.out.println(b1);//false.文件夹中有文件,不为空
File file3 = new File("D:\\IdealProjects\\demo\\src\\day5_\\1.txt");
boolean b3 = file3.delete();
System.out.println(b3);//false.构造方法中文件夹不存在
}
private static void show03() {
File file1 = new File("D:\\IdealProjects\\demo\\src\\day5_11\\aaa\\bbb\\ccc");
boolean b1 = file1.mkdirs();
boolean b2 = file1.mkdirs();
System.out.println(b1);//true
System.out.println(b2);//false
}
private static void show02() {
File file1 = new File("D:\\IdealProjects\\demo\\src\\day5_11\\day5_11_test");
boolean b1 = file1.mkdir();
boolean b2 = file1.mkdir();
File file2 = new File("D:\\IdealProjects\\demo\\src\\day5_\\day5_11_test");
boolean b3 = file2.mkdir();
System.out.println();
System.out.println(b1);//true
System.out.println(b2);//false.文件夹已经存在
System.out.println(b3);//false.构造方法中文件夹不存在
}
private static void show01() throws IOException {
File file = new File("D:\\IdealProjects\\demo\\src\\day5_11\\1.txt");
boolean b1 = file.createNewFile();
boolean b3 = file.createNewFile();
System.out.println(b1);//true
System.out.println(b3);//false
File file3 = new File("D:\\IdealProjects\\demo\\src\\day5_11\\文件夹");
file3.createNewFile();//还是文件
File file2 = new File("D:\\IdealProjects\\demo\\src\\day5_\\1.txt");
boolean b2 = file2.createNewFile();
System.out.println(b2); //路径名不存在,抛出异常。java.io.IOException
}
}
五,遍历文件夹的方法
1,String[] list():返回一个String数组,表示该File目录的所有文件和目录,获取所有文件和文件夹的名称。
2,File[] listFiles():返回一个File数组,表示该File目录的所有文件和目录,把文件/文件夹封装为一个File对象。
注意:list()方法和listFiles()方法遍历的是构造方法中给出的目录,若目录不存在,或者路径不是一个目录,会抛出空指针异常。
import java.io.File;
public class DemoFileSearch {
public static void main(String[] args) {
// show01();
// show02();
}
private static void show02() {
File file = new File("D:\\IdealProjects\\demo\\src\\day5_11");
File[] files = file.listFiles();
for (File file_inner : files) {
System.out.println(file_inner+":"+file_inner.length());
}
/*
D:\IdealProjects\demo\src\day5_11\aaa:0
D:\IdealProjects\demo\src\day5_11\day5_11_test:0
D:\IdealProjects\demo\src\day5_11\DemoCreateFile.java:2336
D:\IdealProjects\demo\src\day5_11\DemoFileCreate.java:1161
D:\IdealProjects\demo\src\day5_11\DemoFileGet.java:1744
D:\IdealProjects\demo\src\day5_11\DemoFileJudge.java:560
D:\IdealProjects\demo\src\day5_11\DemoFileSearch.java:1173
D:\IdealProjects\demo\src\day5_11\DemoFileStaticValue.java:849
*/
}
private static void show01() {
// File file = new File("D:\\IdealProjects\\demo\\src\\day5_");//NullPointerException
// File file = new File("D:\\IdealProjects\\demo\\src\\day5_11\\DemoFileGet.java");//NullPointerException
File file = new File("D:\\IdealProjects\\demo\\src\\day5_11");
String[] arr = file.list();
for (String filename : arr) {
System.out.println(filename);
}
/*
aaa
day5_11_test
DemoCreateFile.java
DemoFileCreate.java
DemoFileGet.java
DemoFileJudge.java
DemoFileSearch.java
DemoFileStaticValue.java
*/
}
}