1.File类
File类是Java中对文件及文件夹操作的类,可以对文件和文件夹进行获取、判断、添加、删除等操作;
对象实例的创建(三种方法):
//使用绝对路径创建File对象
String str = "E:\\javaDM\\temp_1\\FileTemp.txt";
File temp_1 = new File(str);
System.out.println(temp_1);//E:\\javaDM\\temp_1\\FileTemp.txt
//使用父路径和子路径名字符串创建创建File对象,即创建File对象时,参数一使用目标文件或文件夹的上级路径,参数二使用目标文件名或文件夹名称
String str_1 = "E:\\javaDM\\temp_1\\";
String str_2 = "FileTemp.txt";
File temp_2 = new File(str_1, str_2);
System.out.println(temp_2);//E:\\javaDM\\temp_1\\FileTemp.txt
//根据父路径对应文件对象和子路径名字符串来创建文件对象
String str_3 = "E:\\javaDM\\temp_1\\";
String str_4 = "FileTemp.txt";
File temp_3 = new File(str_3);
File temp_4 = new File(temp_3, str_4);
System.out.println(temp_4);//E:\\javaDM\\temp_1\\FileTemp.txt
注意:创建一个File类型的对象,将文件参数传入构造方法中,对于File对象创建来说,无论文件路径是否存在都不影响对象的创建
1.File类判断相关方法
public boolean exists() 判断File对象中路径是否存在,结果返回布尔类型数据
public boolean isDirectory() 判断File对象中路径是否为文件夹,结果返回布尔类型数据
public boolean isFile() 判断File对象中路径是否为文件,结果返回布尔类型数据
String str = "E:\\javaDM\\temp_1\\FileTemp.txt";
File temp_1 = new File(str);
System.out.println("当前对象包含路径是否存在:"+temp_1.exists());
System.out.println("当前对象包含路径是否为一个文件:"+temp_1.isFile());
System.out.println("当前对象包含路径是否为一个文件夹:"+temp_1.isDirectory());
2.File类获取相关方法
public long length() 获取文件大小(字节数量)
public String getAbsolutePath() 返回文件的绝对路径
public String getPath() 返回创建File对象时传入的路径
public String getName() 返回文件的名称,带后缀(如果是文件夹则无后缀,但是需注意也存在一些无后缀的文件,但是在Windows文件管理器中同名的无后缀文件和文件夹不能同名)
public long lastModified() 返回文件的最后修改时间的毫秒值(时间戳),可以使用时间类进行格式化转换为需要的时间格式进行显示
private static void InitSimpleDateFormat(File temp_2) {
long timeLast=temp_2.lastModified();
Instant instant1=Instant.ofEpochMilli(timeLast);//根据时间毫秒值获取时间instant对象
ZonedDateTime time= instant1.atZone(ZoneId.of("Asia/Shanghai"));
DateTimeFormatter dtf1= DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss EE a");//创建解析/格式化器
System.out.println("解析/格式化操作最后修改时间"+dtf1.format(time));//将要解析/格式化的时间对象放入解析/格式化器,进行解析/格式化操作
}
File temp_1 = new File("File_Experiment\\temp_1");
File temp_2 = new File("File_Experiment\\temp_1\\FileTemp.txt");
long lg_1=temp_1.length();
long lg=temp_2.length();//只能返回文件的大小,对于文件夹则无法使用,只能在对文件夹进行遍历时,对文件夹中的文件使用此方法
System.out.println("获取当前对象包含路径文件大小:"+lg_1);//---由于对文件夹无法使用,所以结果为0
System.out.println("获取当前对象包含路径文件大小:"+lg);
System.out.println("获取当前对象包含路径文件绝对路径:"+temp_2.getAbsolutePath());
System.out.println("获取当前对象创建时传入的路径:"+temp_2.getPath());
System.out.println("获取当前对象包含路径的文件名(带后缀):"+temp_2.getName());//对于文件返回文件名+后缀,对于文件夹返回文件夹名称
System.out.println("获取当前对象包含路径文件的最后修改时间:"+temp_2.lastModified());//返回时间毫秒值(时间戳),如果要得到具体的时间(年月日时分秒)则需借助时间类来实现
InitSimpleDateFormat(temp_2);//使用时间类对时间毫秒值格式化
3.File类创建和删除相关方法
public boolean createNewFile() 创建一个新的空文件夹
public boolean mkdir() 创建单极文件夹
public boolean mkdirs() 创建多级文件夹
public boolean delete() 删除一个文件、空文件夹
File temp_1=new File("File_Experiment\\mkFile\\test.txt");
try {
//对于创建文件如果父级目录不存在则报错,此方法只能创建文件,如果创建的目标路径最后无后缀的话,则创建一个无后缀的文件
//注意:此方法需可能导致异常抛出,需使用try{}catch{}方法或添加异常签名才能正常运行
System.out.println("创建一个新空文件:"+temp_1.createNewFile());
} catch (IOException e) {
e.printStackTrace();
}
//mkdir创建一个单级文件夹,只能创建单级文件夹,不然创建失败,
// 注意:且由于Windows文件管理器中路径必须唯一,所以当文件目录中有创建目标文件夹名称一致的无后缀文件则也会导致创建失败
File temp_2=new File("File_Experiment\\mkFiles");
System.out.println("创建一个新的空单级目录(文件夹):"+temp_2.mkdir());
//此方法既可以创建单级文件夹也可以创建多级文件夹,底层会先判断是否可以使用mkdir创建单级文件夹,
//可以的话直接创建返回true,否则再进入多级文件夹创建逻辑,
//所谓多级文件夹即创建的文件夹路径的父级目录与子级目录或路径中其他不存在的文件夹目录都不存在,创建时都会一并创建
File temp_3=new File("File_Experiment\\mkFile\\mkdirFiles");
System.out.println("创建一个新的多级目录(文件夹):"+temp_3.mkdirs());
//删除方法只能删除文件或空文件夹,对于非空文件夹可以采用遍历删除的方式
//注意:使用此方法删除的文件或文件夹是直接删除,不会进入回收站77
File temp_1=new File("File_Experiment\\mkFile\\test.txt");
System.out.println("删除一个文件:"+temp_1.delete());
File temp_2=new File("File_Experiment\\mkFiles");
System.out.println("删除一个空文件夹:"+temp_2.delete());
File temp_3=new File("File_Experiment\\mkFile");
System.out.println("尝试删除一个非空文件夹:"+temp_3.delete());
4.File类的文件夹遍历
由于File类本身并不提供专门的遍历方法,但可以使用获取文件夹内容的方法来进行遍历,所以如果需要使用File对象对文件夹进行遍历的话,就需要使用此方法配合循环进行遍历
public File[] listFiles() 返回文件夹下的所有文件和文件夹的路径组成的File数组
//获取当前路径下所有的内容,返回一个数组
//注意:
// 当调用者File表示的路径不存在或表示的是一个文件时返回null
// 当调用者File表示的路径是一个空文件夹时返回一个长度为0的数组
// 当调用者File表示的路径是一个有内容的文件夹时,将里面所有的文件和文件夹的路径放入File数组中返回
// 当调用者File表示的路径是一个有隐藏文件的文件夹时,将里面所有的文件和文件夹的路径放入File数组中返回,包括隐藏文件
// 当调用者File表示的路径是一个需要权限才能访问的文件夹时,返回null
File temp_1=new File("File_Experiment");
File[] Files=temp_1.listFiles();//获取当前路径下所有内容(包括文件、文件夹无论是否为隐藏的) q1q,
//遍历获取的File数组
System.out.println("遍历File_Experiment文件夹:");
for (File file : Files) {
System.out.println("\t"+file);
}