import java.io.File;
public class NewFile {
public static void main(String[] args) {
File f1 = new File("D:\\software\\aaa\\bbb.txt");
File f2 = new File("D:/software/aaa/bbb.txt");
File f3 = new File("D:"+File.separator+"software"+File.separator+"aaa"+File.separator+"bbb.txt");
System.out.println(f3.getAbsoluteFile());
}
}
运行结果如下:
这三种效果都是相同的,都可以得到该类的对象。
3.0 File 类的常用 API
先来介绍创建、删除、重命名、查询文件和目录的信息的相关 API。
3.1 如何创建文件或文件夹
createNewFile():创建一个新的空文件。
代码如下:
java复制代码
import java.io.IOException;
public class NewFile {
public static void main(String[] args) throws IOException {
//先要定义 File 类对象
File f1 = new File("D:\\software\\aaa\\ccc.txt");
//创建文件
f1.createNewFile();
}
}
如果文件不存在的话,就会创建一个空文件。需要注意的是,这里会有编译异常,需要抛异常或者捕获异常。
mkdir():创建一个新的目录。
代码如下:
java复制代码
import java.io.File;
public class NewFile {
public static void main(String[] args) {
File f1 = new File("D:\\software\\aaa\\ddd");
f1.mkdir();
}
}
如果文件不存在的话,就会创建一个空文件。需要注意的是,只能创建一级文件夹。
mkdirs():创建一个多级目录。
代码如下:
java复制代码
import java.io.File;
public class NewFile {
public static void main(String[] args) {
File f1 = new File("D:\\software\\aaa\\ddd\\fff\\ggg\\hhh");
f1.mkdir();
}
}
这些方法若创建成功都会返回 boolean 类型。
3.2 如何查询文件和文件夹的信息
这些查询信息的 API 会比较多,但是很容易上手,直接代码演示了。
代码如下:
java复制代码
import java.text.SimpleDateFormat;
import java.io.File;
public class NewFile {
public static void main(String[] args) {
File f1 = new File("D:\\software\\aaa\\bbb.txt");
//1.0 判断当前文件对象,对应的文件路径是否存在,存在返回true,反之。
System.out.println(f1.exists());
//输出结果为:true
//2.0 判断当前文件对象指代的是否是文件,是文件返回true,反之。
System.out.println(f1.isFile());
//输出结果为:true
//3.0 判断当前文件对象指代的是否是文件夹,是文件返回true,反之。
System.out.println(f1.isDirectory());
//输出结果为:false
//4.0 获取文件的名称(包含后缀)
String name = f1.getName();
System.out.println(name);
//输出结果为:bbb.txt
//5.0 获取文件的大小,返回字节个数,返回类型为 long 类型。
long len = f1.length();
System.out.println(len);
//输出结果为:0
//6.0 获取文件的最后修改的时间,返回类型为 long 类型。
long lastTime = f1.lastModified();
System.out.println(lastTime);
//输出结果为:1698570082109
//这里可以格式化
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = simpleDateFormat.format(lastTime);
System.out.println(time);
//输出结果为:2023-10-29 17:01:22
//7.0 获取创建文件对象时,使用的路径。
String path = f1.getPath();
System.out.println(path);
//输出结果为:D:\software\aaa\bbb.txt
//8.0 获取创建文件对象时,使用的绝对路径。
String absolutePath = f1.getAbsolutePath();
System.out.println(absolutePath);
//输出结果为:D:\software\aaa\bbb.txt
}
}
运行结果如下:
3.3 如何删除文件和文件夹
delete():删除文件或文件夹。
代码如下:
java复制代码
import java.io.File;
public class NewFile {
public static void main(String[] args) {
File f1 = new File("D:\\software\\aaa\\bbb.txt");
System.out.println(f1.delete());
}
}
删除成功会返回ture,反之。需要注意的是,只能删除空文件或者文件夹。
3.4 如何重命名文件和文件夹
renameTo(File dest):重命名文件或文件夹。
代码如下:
java复制代码
import java.io.File;
public class NewFile {
public static void main(String[] args) {
File f1 = new File("D:\\software\\aaa\\ccc.txt");
File f2 = new File("D:\\software\\aaa\\sss.txt");
System.out.println(f1.renameTo(f2));
}
}
如果可以改名成功,会返回true,反之。
3.5 如何遍历文件和文件夹名称
list():返回目录下的所有文件和目录的名称数组。
代码如下:
java复制代码
import java.io.File;
import java.util.Arrays;
public class NewFile {
public static void main(String[] args) {
File f = new File("D:\\software\\code\\2023_java\\2023_java_code");
String[] strings = f.list();
System.out.println(Arrays.toString(strings));
}
}
返回的是字符串类型的文件名,而不是文件或者文件夹对象。
3.6 如何遍历文件和文件夹对象
listFiles():返回目录下的所有文件和目录的File对象数组。
代码如下:
java复制代码
import java.io.File;
import java.util.Arrays;
public class NewFile {
public static void main(String[] args) {
File file = new File("D:\\software\\code\\2023_java\\2023_java_code");
File[] files = file.listFiles();
System.out.println(Arrays.toString(files));
}
}