java.io.File类
- 文件和路径名的抽象表达形式
- java把电脑中的文件和文件夹(目录)封装了一个File类,我们可以使用File类对文件和文件夹进行如下操作
- 创建一个文件/文件夹
- 删除
- 获取
- 判断文件/文件夹是否存在
- 文件夹遍历
- 获取文件大小
注:File类是一个与系统无关的类,任何的操作系统都可以使用这个类的方法
重点单词
file:文件 directory:文件夹/目录 path:路径
File类的静态成员方法 -File调用
static String pathSeparator
与系统有关的路径分隔符,打印是一个分号。 Linux(:)String pathSeparator = File.pathSeparator;
System.out.println(pathSeparator); //;static char pathSeparatorChar
与系统有关的路径分隔符。static String separator
与系统有关的默认名称分隔,打印是windows反斜杠。Linux(/)String separator = File.separator;
System.out.println(separator); //- static char separatorChar
与系统有关的默认名称分隔符。注:操作路径不能写死,因为程序可能不是在Windows下
eg: D:\vs2019\TS改为
"D:"+File.separator+"vs2019"+File.separator+TS"
File类构造方法
- File(File parent, String child)
根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。- File parent优点:路径是File类型,可以对路径进行操作,再创建对象
public static void show02(){
File parent = new File("D:\\");
File file = new File(parent.getParent(), "b.txt");
- File(String pathname)
通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。String name:字符串的路径名称
1.路径可以是文件结尾/也可以文件夹结尾
2.可以是相对/绝对路径
3.路径可以是存在的,可以是不存在的
注:创建File对象,只是把字符串路径封装为File对象,不考虑路径真假
public static void show01(){
File file = new File("D:\\vs2019\\TS\\a.txt");
//重写了toString方法
System.out.println(file); //D:\vs2019\TS\a.txt
}
- File(String parent, String child)
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。把路径分为两部分,使用灵活
String parent:eg: "c:\\"-灵活修改
String child:eg: "a.txt" -灵活修改
- File(URI uri)
通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。
常用方法 - File对象调用
创建/删除文件或文件夹
public boolean createNewFile()
由File对象调用创建,创建的是生成对象时,构造方法里的路径文件,可以是相对路径
创建成功:true
创建失败:false只能创建文件,不可创建文件夹,若书写有误,默认txt类型
文件的路径必须存在,否则抛出异常
//由于方法声明抛出异常,在写程序时,就会把异常扔回调用者,我们必须处理
public boolean createNewFile() throws IOException {
SecurityManager security = System.getSecurityManager();
if (security != null) security.checkWrite(path);
if (isInvalid()) {
throw new IOException("Invalid file path");
}
return fs.createFileExclusively(path);
}
private static void show01() {
//报错
//File file = new File("D:\\vs2019\\TS");
//file.createNewFile();
//创建成功,注意用于有无权限访问文件夹
File file = new File("D:\\a.txt");
try {
System.out.println(file.createNewFile());
} catch (IOException e) {
e.printStackTrace();
}
}
public boolean mkdir()
创建单级文件夹,由File生成对象时,构造方法的参数创建
private static void show01() {
File file = new File("文件夹1\\子文件夹");
System.out.println(file.mkdir());//false
//File file = new File("文件夹1");
// System.out.println(file.mkdir()); true
}
}
public boolean mkdirs()
创建多级文件夹,也可以时单级的,绝对/相对都可以
private static void show01() {
File file = new File("文件夹1\\子文件夹");
System.out.println(file.mkdirs()); //true
}
//如果书写错误,还是创建的文件
}
public boolean delete()
删除构造方法给出的文件/文件夹
false:文件夹里有内容,构造方法的参数路径不存在
注:直接在硬盘删除,不走回收站
获取功能的方法
public String getAbsolutePath()
获取构造方法中的绝对路径
private static void show01() {
File file = new File("D:\\vs2019\\TS");
String file1 = file.getAbsolutePath();
System.out.println(file); //D:\vs2019\TS
File file0 = new File("a.txt");
String file02 = file0.getAbsolutePath();
//当前写程序的相对文件下的,绝对路径
System.out.println(file02); //C:\Users\Administrator\Desktop\java_code\a.txt
//实际也可以写(file2.toString()),底部调用的是getPath()
}
public String getPath()
与上面不同,获取构造方法的路径,是什么就是什么
public String getName()
获取构造方法中的结尾文件/或者文件夹
public long length()
获取的是构造方法指定的文件大小,以字节为单位Byte
注:返回0 的情况 - 文件夹是没有大小单位的,路径不存在
判断功能方法
public boolean exists()
File对象调用,文件/目录存在返回True。否则false
也可以判断相对路径下的文件public boolean isDirectory()
判断构造方法中给的路径是否以文件夹结尾
public boolean isFile
判断构造方法中给的路径是否以文件结尾
注:前提需要路径存在
File类遍历文件/文件夹的功能
public String[] list()
用于遍历构造方法中的路径,返回的时一个包含目录中所有子目录与文件的字符串数组,但仅限当前目录下,不会向下递归
private static void show01() {
File file = new File("C:\\Users\\Administrator\\Desktop\\java_code");
String[] list = file.list();
for(String str : list) {
System.out.println(str);
}
}
/*
.idea
.vscode
demo01
demo02
demo03
*/
public File[] listFiles()
同上,不过返回的是File数组,将文件/文件夹路径封装为File对象
private static void show01() {
File file = new File("C:\\Users\\Administrator\\Desktop\\java_code");
File[] list = file.listFiles();
for(File str : list) {
System.out.println(str);
}
}
/*
C:\Users\Administrator\Desktop\java_code\.idea
C:\Users\Administrator\Desktop\java_code\.vscode
C:\Users\Administrator\Desktop\java_code\demo01
C:\Users\Administrator\Desktop\java_code\demo02
C:\Users\Administrator\Desktop\java_code\demo03
*/
- 注:list()与listFiles方法遍历的是构造方法的参数目录,若不存在,抛出空指针异常,如果构造方法中给的不是目录也会抛出空指针异常