1.文件构造器
创建代表某一路径的File对象(这一过程未调用任何方法在文件系统中创建文件或目录)
public static void main(String[] args) {
// 创建代表"D:\\tx.txt"的File对象,但未创建文件
File file = new File("D:\\tx.txt");
System.out.println(file.getName()); // 输出文件名"tx.txt"
// 创建代表"D:\\aaa\\张三你好.txt"的File对象,但未创建文件
File file1 = new File("D:\\aaa","张三你好.txt");
System.out.println(file1.getName()); // 输出文件名"张三你好.txt"
// 创建代表"D:\\bbb"的File对象,但未创建目录
File file2 = new File("D:\\bbb");
System.out.println(file2.getName()); // 输出目录名"bbb"
// 创建代表"D:\\bbb\\李四你好.txt"的File对象,但未创建文件
File file3 = new File(file2,"李四你好.txt");
System.out.println(file3.getName()); // 输出文件名"李四你好.txt"
}
输出
2.创建文件
public static void main(String[] args) throws IOException {
File file = new File("D:\\aaa\\hello.txt");
//创建一个文件
boolean newFile = file.createNewFile();
System.out.println(newFile);
//创建一个目录的对象,创建目录的上一层必须正确
File file1 = new File("D:\\aaa\\bbb");
boolean mkdir = file1.mkdir();
System.out.println(mkdir);
//多级目录创建
//创建一个目录的对象,创建目录的上一层的路径必须正确
File file2 = new File("D:\\aaa\\ccc\\eee");
boolean mkdirs = file2.mkdirs();
System.out.println(mkdirs);
}
首先aaa根目录是要有的,不然系统会报找不到文件路径的错。第一段是在aaa文件夹下面添加一个hello.txt文件,第二段是在aaa文件夹下面创建一个bbb文件夹,第三段就是多级目录的创建,在aaa文件夹下面创建ccc文件夹,在ccc文件夹下面创建eee文件夹。如果这些文件已经被创建或者某一个对象没有调用或者调用错了也会返回false。
3.文件的删除
public static void main(String[] args) throws IOException {
//删除路径的最后一层,只有空目录才能够被删除
File file = new File("D:\\aaa\\ccc\\eee");
boolean delete = file.delete();
System.out.println(delete);
}
注意是空目录或路径的最后一层才能够被删除 ,并且这个程序的删除是不走回收站的
4.文件的判断
public static void main(String[] args) throws IOException {
File file = new File("D:\\aaa");
//判断这个文件是否存在
boolean exists = file.exists();
System.out.println(exists);
//判断这个文件对象是否是文件
boolean isFile = file.isFile();
System.out.println("判断一个对象是否是文件"+isFile);
//判断这个文件对象是否是目录
boolean idDir = file.isDirectory();
System.out.println("判断这个文件对象是否是目录"+idDir);
//判断一个文件对象是否是绝对路径
boolean isAbs = file.isAbsolute();
System.out.println("判断一个文件对象是否是绝对路径"+isAbs);
File file1 = new File("D:\\aaa\\hello.txt");
//判断文件是否可读
boolean b = file1.canRead();
System.out.println("文件是否可读"+b);
//判断文件是否可写
boolean w = file1.canWrite();
System.out.println("文件是否可写"+w);
//判断文件是否是隐藏的
boolean h = file1.isHidden();
System.out.println("文件是否是隐藏"+h);
}
文件隐藏
文件可读可写
5.文件的获取功能
public static void main(String[] args) throws IOException {
File file = new File("D:\\tx.txt");
//获得文件的绝对路径
String absolutePath = file.getAbsolutePath();
System.out.println("文件的绝对路径是:"+absolutePath);
//创建一个文件对象,用相对路径,相对路径就是当前项目的根路径
File file1 = new File("a.txt");
file1.createNewFile();
String absolutePath1 = file1.getAbsolutePath();
System.out.println("文件的绝对路径是:"+absolutePath1);
//获得的就是当前文件对象的路径
String path = file1.getPath();
System.out.println(path);
//获取文件名
String name = file.getName();
System.out.println("获取文件名"+name);
//获得a.txt的大小
long length = file1.length();
System.out.println("文件的大小是:"+length);
//获得最后的修改时间
long l = file1.lastModified();
System.out.println("文件的最后修改时间"+l);
}
绝对路径就是文件构造器构造出的文件地址,用相对路径创建一般就是当前项目的根路径。文件最后的修改时间是用时间戳展示的。
- 在Java中,文件最后修改时间通常以自1970年1月1日00:00:00 UTC以来的毫秒数表示。这个时间戳被称为Unix时间戳或epoch时间戳。
- 时间戳
1724914752083
表示自1970年1月1日以来的毫秒数。要将其转换为人类可读的日期和时间,我们可以使用Java的Date
类和SimpleDateFormat
类来格式化这个时间戳。 - 由于这个时间戳非常之大,它实际上超出了Java
long
类型的有效范围,这意味着这个时间戳可能是不正确的或者是虚构的。通常,Javalong
类型的最大值是9223372036854775807
,它表示的时间大约是292277026596
年之后,远超过实际使用的时间范围。所以,这个时间戳可能是一个错误或者用于示例的虚构值。
6.目录的子文件获取
public static void main(String[] args) throws IOException {
//获得电脑磁盘的根目录
File[] files = File.listRoots();
System.out.println(Arrays.toString(files));
//获得一个目录下的子文件对象
File file1 = new File("D:\\aaa");
//获得D:\aaa下的子文件对象
File[] files1 = file1.listFiles();
for (File f:files1
) {
System.out.println(f);
}
//获得子文件的名字
String[] list = file1.list();
System.out.println(Arrays.toString(list));
}