File 文件:
Java.io.File用于标识文件(目录)
File类只用于表示文件(目录)的信息(名称、大小等),不能用于文件内容的访问。
File类常用的API: exists()判断是否存在 mkdir()创建目录 createNewFile()创建文件 getAbsolutePath() getParent()获取地址
File类用于判断文件或目录,以及创建他们
File.separator 设置分隔符
package com.zhao.file; import java.io.File; import java.io.IOException; import java.nio.file.*; public class FileDemo{ public static void main(String[] args) { //了解构造函数的情况 查帮助 java.io.File directory=new java.io.File("D:\imooc"); // System.out.println(file.exists()); if (!directory.exists()) { //创建目录 directory.mkdir(); } else{ directory.delete(); } File file=new File("D:"+File.separator+"imooc"+File.separator+"日记.txt"); if (!file.exists()) { try { file.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else{ file.delete(); } System.out.println(file); System.out.println(file.getAbsolutePath()); System.out.println(file.getParentFile()); System.out.println(file.getParent()); System.out.println(file.getPath()); } } 创建FileUitl类,实现目录遍历的功能 /** * 列出指定目录下(包括其子目录)的所有文件 * @param dir:指定目录 * @throws IOException */ public static void listDirectory(File dir) throws IOException{ if (!dir.exists()) { System.out.println("指定目录不存在,查询失败"); } else if (!dir.isDirectory()) { System.out.println("传递的参数有误,不是目录"); } else{ //返回的是直接子目录(文件)的抽象 File[] files=dir.listFiles(); for(File file:files){ if (file.isDirectory()) { System.out.println("Directory :"+file.getName()+", "+file.getAbsolutePath()+"---> Parent :"+file.getParent()); //递归 listDirectory(file); } else if(file.isFile()){ System.out.println("File :"+file.getName()+", "+file.getAbsolutePath()); } } } }
在此方法中,先判断传入的文件dir是否存在,是否是目录。
在dir是目录的情况下,dir.listFiles()方法返回该目录下所有的子文件(目录)的抽象
此时仍需要判断File[] 中的每个File是文件还是目录,是文件还好,是目录的话进行递归操作。
listDirectory(File)循环调用,对所有目录都进行遍历
至此FiltUtil的listDirectory完成,并不复杂,重温了递归操作。