File类的使用
概念:代表物理盘符中的一个文件或者文件夹
小案例:
package com.iopractise; import java.io.File; import java.io.FileFilter; import java.io.IOException; import java.util.Date; /** * File类的使用 * 1.分隔符 * 2.文件操作 * 3.文件夹操作 */ public class Demo19 { public static void main(String[] args) throws Exception { // separator(); // fileOper(); directoryOpe(); } // 1. 分隔符 public static void separator() { System.out.println("路径分隔符" + File.pathSeparator); System.out.println("名称分隔符" + File.separator); } public static void fileOper() throws IOException { // 1. 创建文件 File file = new File("file.txt"); if (!file.exists()) { // 是否存在 boolean b = file.createNewFile(); System.out.println("创建结果:" + b); } // 2. 删除文件 // 2.1 直接删除 boolean deleteFlag = file.delete();// 成功true System.out.println("文件删除是否成功:" + deleteFlag); // 2.2 使用jvm退出时删除 file.deleteOnExit();//这个方法最后是没有返回值的 // 3. 获取文件信息 System.out.println("获取绝对路径" + file.getAbsolutePath()); System.out.println("获取路径" + file.getPath());//该方法获取的是文件的相对路径 System.out.println("获取文件名称" + file.getName()); System.out.println("获取夫目录" + file.getParent()); System.out.println("获取文件长度" + file.length()); System.out.println("文件创建时间" + new Date(file.lastModified()).toLocaleString()); // 4. 判断 System.out.println("是否可写" + file.canWrite()); System.out.println("是否是文件" + file.isFile()); System.out.println("是否隐藏" + file.isHidden()); } // 文件夹操作 public static void directoryOpe() throws Exception{ // 1. 创建文件夹 File dir = new File("d:\\aaa\\bbb\\ccc"); System.out.println("文件目录:"+dir.toString()); if(!dir.exists()){ //dir.mkdir(); // 只能创建单级目录 dir.mkdirs(); // 创建多级目录 } // 2. 删除文件夹 // 2.1 直接删除 boolean deleteFlag = dir.delete();// 只能删除最底层空目录 System.out.println("文件夹是否删除成功:"+deleteFlag);//这里只会删除ccc这层目录,如果ccc目录下还有其他文件,这个时候,ccc目录是不会删除的。 // 2.2 使用jvm删除 dir.deleteOnExit(); // 3. 获取文件夹信息 System.out.println("获取绝对路径" + dir.getAbsolutePath()); System.out.println("获取路径" + dir.getPath());//File(文件的路径),该方法返回的是括号中的文件路径 System.out.println("获取文件名称" + dir.getName()); System.out.println("获取父目录" + dir.getParent()); System.out.println("获取文件长度" + dir.length()); System.out.println("文件夹创建时间" + new Date(dir.lastModified()).toLocaleString()); // 4. 判断 System.out.println("是否是文件夹" + dir.isDirectory()); System.out.println("是否隐藏" + dir.isHidden()); // 5. 遍历文件夹 File dir2 = new File("D:\\图纸"); String[] files = dir2.list(); for(String string : files){ System.out.println(string); } System.out.println("================FileFilter接口的使用=================="); // FileFilter接口的使用 File[] files2 = dir2.listFiles(new FileFilter(){ public boolean accept(File pathname){ if(pathname.getName().endsWith(".xmind")){ return true; } return false; } }); for(File file : files2){ System.out.println(file.getName()); } } }
注意:File.length()方法获取的是文件的大小。(通俗的讲)
FileFilter接口
Public interface FileFilter
.boolean accept(File pathname)
.当调用File类中listFiles()方法的时候,支持传入FileFilter接口接口实现类,对获取文件进行过滤,只有满足条件的文件的才可以出现在listFiles()的返回值中。