为什么要使用File类?
如果使用数组,变量在程序结束的时候,则所有数据就会丢失。计算机可以用硬盘实现对数据的永久存储,Java提供了一个对文件储存有关的类——File类。
什么是IO流?
- 可以将数据从本地文件中提取出来
- 可以将数据保存到本地文件
File的概述与构造方法
-
它是文件和目录路径名的抽象表示
-
文件和目录是可以通过File封装成对象的
-
对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已.它可以是存在的,也可以是不存在的.将来是要通过具体的操作把这个路径的内容转换为具体存在的
方法名 | 说明 |
---|---|
File(String pathname) | 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例 |
File(String parent, String child) | 从父路径名字符串和子路径名字符串创建新的 File实例 |
File(File parent, String child) | 从父抽象路径名和子路径名字符串创建新的 File实例 |
public class FileDemo01 {
public static void main(String[] args) {
//File(String pathname):
//通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
File f1 = new File("C:\\Users\\Harmony\\Desktop\\Test\\a.txt");
System.out.println(f1);
//File(String parent, String child):
//从父路径名字符串和子路径名字符串创建新的 File实例
File f2 = new File("C:\\Users\\Harmony\\Desktop\\Test", "a.txt");
System.out.println(f2);
//File(File parent, String child):
//从父抽象路径名和子路径名字符串创建新的 File实例
File f3 = new File("C:\\Users\\Harmony\\Desktop\\Test");
File f4 = new File(f3, "a.txt");
System.out.println(f4);
}
}
File的创建功能
方法名 | 说明 |
---|---|
public boolean createNewFile() | 当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件 |
public boolean mkdir() | 创建由此抽象路径名命名的目录 |
public boolean mkdirs() | 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录 |
(1)createNewFile()方法
public class FileDemo02 {
public static void main(String[] args) throws IOException {
File f1 = new File("C:\\Users\\Harmony\\Desktop\\Test\\a.txt");
boolean result = f1.createNewFile();
System.out.println(result);
}
}
注意点:
- 如果文件存在,则使用createNewFile()创建失败,返回false
- 如果文件不存在,则使用createNewFile()创建成功,返回true
- 不管调用者有没有后缀名,使用createNewFile()方法,只能创建文件。
(2)mkdir()与mkdirs()
public class FileDemo02 {
public static void main(String[] args) throws IOException {
File f2 = new File("C:\\Users\\Harmony\\Desktop\\Test\\A");
boolean res = f2.mkdir();
System.out.println(res);
}
}
注:其中"C:\\Users\\Harmony\\Desktop\\Test"目录是已经存在的!这里只是创建了一个A目录
注意点:
- 使用mkdir()方法只能创建单级文件夹(目录),不能创建多级文件夹(目录)。
- 不管是否有后缀名,只能创建文件夹(目录),不能创建文件!
public class FileDemo02 {
public static void main(String[] args) throws IOException {
File f2 = new File("C:\\Users\\Harmony\\Desktop\\Test\\A\\B\\C");
boolean res = f2.mkdirs();
System.out.println(res);
}
}
注意点:
- 使用mkdirs()方法既可以创建单级文件夹(目录),也可以创建多级文件夹(目录)。
- 不管是否有后缀名,只能创建文件夹(目录),不能创建文件!
显然mkdirs()的用途比mkdir()的要广泛!所以我们实际应用中基本上不适用mkdir() !
mkdirs()源码
public boolean mkdirs() {
if (exists()) {
return false;
}
if (mkdir()) {
return true;
}
File canonFile = null;
try {
canonFile = getCanonicalFile();
} catch (IOException e) {
return false;
}
File parent = canonFile.getParentFile();
return (parent != null && (parent.mkdirs() || parent.exists()) &&
canonFile.mkdir());
}
我们可以查看一下mkdirs的源码如上,其中第二个if就有调用mkdir方法。
File的删除功能
方法名 | 说明 |
---|---|
public boolean delete() | 删除由此抽象路径名表示的文件或目录 |