44、File类简介
使用File类创建文件夹
File类在java.io包下,看名字应该可以猜到,这个类是跟文件夹操作有关,下面使用File类中的方法在硬盘中创建文件夹。
package com.sutaoyu.file; import java.io.File; import java.io.IOException; public class test_1 { public static void main(String[] args) throws IOException { //如果文件存在,就不创建了,返回false,如果不存在就会创建,返回true File file1 = new File("D:\\hello.txt"); System.out.println(file1.createNewFile()); //如果文件夹存在,就不创建了,返回false,如果不存在就会创建,返回true File file2 = new File("D:\\new"); System.out.println(file2.mkdirs()); //可以创建多级目录,如果文件夹存在,就不创建了,返回false,如果不存在就会创建,返回true File file3 = new File("D:\\onkey\\1024"); System.out.println(file3.mkdirs()); //只能创建文件夹 File file4 = new File("D:\\monkey\\1024.txt"); System.out.println(file4.mkdirs()); //如果不写盘符,会默认在项目的根目录里面创建 File file5 = new File("1026.txt"); System.out.println(file5.createNewFile()); System.out.println(file5.exists()); } }
注意:如果没有写盘符路径,默认在项目路径里面创建
使用File类重命名和删除文件
- public boolean renameTo(File dest):把文件重命名为指定的文件路径
- public boolean delete():删除文件或者文件夹
package com.sutaoyu.file; import java.io.File; public class test_2 { public static void main(String[] args) { // //旧名字 // File oldFile = new File("D:\\hello.txt"); // //新名字 // File newFile = new File("D:\\world.txt"); // oldFile.renameTo(newFile); //旧名字 // File oldFile = new File("D:\\world.txt"); // //新名字 // File newFile = new File("D:\\monkey\\java.txt"); // //如果两个文件路径不一致,则会将旧文件剪切到新的文件路径中再重命名 // oldFile.renameTo(newFile); // // //不会将文件放到回收站中,而是直接删除 // File del = new File("D:\\monkey\\java.txt"); // //删除 // System.out.println(del.delete()); //如果文件夹下有其他文件,则不会删除 File del1 = new File("D:\\monkey"); System.out.println(del1.delete()); } }
注意:
- 重命名时,如果两个路径不相同,则会将被修改的文件进行剪切,然后再重命名放到新的路径里面
- 删除时不会放入回收站,并且要确保被删除的文件里面没有其他文件才可以进行删除
File类中关于判断的方法
- public boolean isDirectory():判断是否是目录
- public boolean isFile():判断是否是文件
- public boolean exists():判断是否存在
- public boolean isHidden():判断是否隐藏
package com.sutaoyu.file; import java.io.File; public class test_3 { public static void main(String[] args) { //判断是否是文件夹 File file1 = new File("D:\\monkey"); System.out.println(file1.isDirectory()); //判断是否是文件 System.out.println(file1.isFile()); //判断是否是文件夹 File file2 = new File("D:\\new.txt"); System.out.println(file2.isDirectory()); //判断是否是文件 System.out.println(file2.isFile()); //判断文件是否存在 System.out.println(file2.exists()); //判断文件是否隐藏 File file3 = new File("D:\\hidden"); System.out.println(file3.isHidden()); } }
File类其他常用方法
- public String getAbsolutePath():获取绝对路径
- public long length():获取文件大小。字节数
- public long lastModified():获取最后一次的修改时间,毫秒值
- public String[] list():获取文件路径下所有文件名(同一层级目录)
- public File[] listFiles():获取文件路径下所有File对象数组
package com.sutaoyu.file; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; public class test_4 { public static void main(String[] args) { File file1 = new File("1024.txt"); //查看绝对路径 System.out.println(file1.getAbsolutePath()); //文件的大小,单位是字节 System.out.println(file1.length()); //最后修改时间 Date date = new Date(file1.lastModified()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); System.out.println(sdf.format(date)); File file2 = new File("F:\\monkey1024\\01-JavaSE\\代码\\code\\chapter-08"); //获取目录下的同级文件或文件夹的名称 String[] nameArray = file2.list(); for(String name : nameArray){ System.out.println(name); } //获取目录下的同级文件或文件夹的File对象 File[] fileArray = file2.listFiles(); //打印出文件的绝对路径 for(File file : fileArray){ System.out.println(file); } } }
练习:
统计项目根目录下以.txt结尾的文件数量,并将文件名打印出来
分析:
获取项目根目录下的文件名
对文件名进行判断是否是以.txt结尾
代码实现:
package com.sutaoyu.file; import java.io.File; public class test_5 { public static void main(String[] args) { File file = new File("D:\\java\\Eclipse\\chapter-08\\files\\"); File[] fileArray = file.listFiles(); //统计出现次数 int count = 0; for(File name : fileArray) { String s = name.toString(); //判断是否是以.txt文件结尾 if(s.endsWith(".txt")) { if(name.isFile()) { count++; System.out.println(count); } } } System.out.println("以.txt文件结尾的数量是" + count + "个"); } }