一、File概述
File是sun公司给java程序员提供的一个操作文件和文件夹的一个类
路径问题:
相对路径和绝对路径
相对路径:
基于你目前的环境做出一个判断
相对于谁,得有一个参照物
. 当前工作目录
… 当前工作目录的父目录/上一级目录
绝对路径:
根目录 E:\JAVA\qianfeng\完整版资源\JAVA_SE\day17完整版资源\demo\day17_wb\src\com\qfedu\b_file
个人建议:
使用 / 的原因
1./支持windows和Linux系统的
2./也是以后web网站访问资源的一种写法 url http://www.baidu.com:443/index.html
二、File构造方法
File(String pathName);根据指定的路径的名字创建与之对应的文件或者文件夹的File类对象
File(String parent, String child);根据指定文件的父级目录,和对应的子文件夹或者是子文件,来创建对应的File对象
File(File parent,String child );根据指定文件的父级目录的File对象,对应的子文件夹或者是子文件,来创建对应的File对象
示例
import java.io.File;
/**
* @author xue_yun_xiang
* @create 2021-03-17-19:04
*/
public class Demo2 {
public static void main(String[] args) {
File file1 = new File("E:/JAVA/qianfeng/1.txt");
File file2 = new File("E:/JAVA/qianfeng", "2.txt");
File file3 = new File(new File("E:/JAVA/qianfeng"), "3.txt");
//File.separator就相当于 /
File file4 = new File("E:" + File.separator + "JAVA" + File.separator + "qianfeng" + File.separator + "4.txt");
System.out.println(file1);
System.out.println(file2);
System.out.println(file3);
System.out.println(file4);
}
}
三、File的常用方法
File创建文件和创建文件夹
创建一个新的文件,通过File类对象来调用。创建的是当前File类对象保存的路径地址对应的文件
【注意事项】
1.当前操作的是普通文件,必须有后缀
2.操作文件的路径如果不合法,就直接返回false,路径不存在
3.操作的文件夹没有写入的权限。返回值也是false
4.操作的文件已经存在,也会返回false
5.硬盘坏了,也会返回false
boolean createNewFile();
1、用于创建文件,仅仅是文件,不包括文件夹(目录)
2、当此抽象路径名不存在指定名称的文件时才创建
3、如果该路径下已有指定名称的文件,则不会创建,返回false。
4、当指定的抽象路径不存在时会报IOException:系统找不到指定的路径。
boolean mkdir();
1、用于创建此抽象路径名指定的文件的上一级目录。
2、仅仅是创建目录,不创建文件;
3、指定的文件名为test.txt,如果在“C:/Users/Desktop/djomega"下没有test这个目录,则会创建,返回true;反之,不创建,返回false。
但是,如果连djomega这个目录都没有,则返回false。
4、只能创建一级的文件夹目录
boolean mkdirs();可以创建多级文件夹目录。用的比较多
boolean renameTo(File file);移动重命名
示例
import java.io.File;
import java.io.IOException;
/**
* @author xue_yun_xiang
* @create 2021-03-17-19:59
*/
public class Demo3 {
public static void main(String[] args) throws IOException {
File file1 = new File("E:/JAVA/qianfeng/1.txt");
System.out.println(file1.createNewFile());
File file2 = new File("E:/JAVA/qianfeng/2");
System.out.println(file2.mkdir());
File file3 = new File("E:/JAVA/qianfeng/3/4/5");
System.out.println(file3.mkdirs());
}
}
File类删除文件或者文件夹
boolean delete();立即删除
1.这个delete直接从磁盘上面清除数据,不会在回收站
2.删除操作不能删除非空文件,文件夹如果有内容的话,删不掉
deleteOnExit这个方法程序退出以后删除对应的文件夹和文件
一般删除软件的时候运行过程中删除保存的日志等缓存文件。可以节约咱们磁盘。
示例:
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
/**
* @author xue_yun_xiang
* @create 2021-03-17-20:09
*/
public class Demo4 {
public static void main(String[] args) throws IOException {
File file1 = new File("E:/JAVA/qianfeng/1.txt");
System.out.println(file1.createNewFile());//true
//System.out.println(file1.delete());//true
file1.deleteOnExit();
new Scanner(System.in).nextInt();
}
}
File类的判断方法
boolean isFile();判断是否是普通文件
boolean isDirectory();判断是否是文件夹
boolean isHidden();是不是隐藏文件
boolean isAbsolute();是不是以绝对路径创建的一个对象
boolean exists();判断文件或者文件夹是否存在
File类的get方法
String getName();获取文件或者文件夹的名字
String getPath();获取当前创建的File对象的路径
String getParent();获取操作当前文件夹或者文件的父级目录
String getAbsolutePath();获取当前File类对象的绝对路径 (有用)
File类的文件列表方法
static File[] listRoots();获取当前所有盘符的File类对象,不用!!!该方法只能只适用于windows操作系统。Linux和max都不能使用
String[] list();获取File类对象所对应文件夹。所有的子文件和子文件夹的名字
File[] listFiles();获取File类对象对应的文件夹,所有的子文件和子文件夹的对象
File类的特殊方法
long length();获取文件占用硬盘的字节数
long lastModified();获取文件最后的修改时间,返回值是一个时间戳,时间戳:自1970年01月01日 00:00:00 到现在的秒数
示例
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author xue_yun_xiang
* @create 2021-03-18-8:44
*/
public class Demo7 {
public static void main(String[] args) {
File file1 = new File("E:/JAVA/qianfeng/1.txt");
System.out.println(file1.length());
System.out.println(file1.lastModified());
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
String format = simpleDateFormat.format(new Date(file1.lastModified()));
System.out.println(format);
}
}
运行结果:
15
1616028323946
2021-03-18 08:45:23