递归函数,打印指定文件目录下的文件夹和文件名,各子文件夹下也要打印出来

时间:2022-12-09 12:30:16
import java.io.*;
/**

给定一个文件路径,打印以下内容:
如果路径指向一个文件夹则打印该文件夹下所有的子文件夹和文件(包括子文件夹下的文件夹和文件)
如果路径指向一个文件则打印该文件名
如果路径指向不存在的文件则打印:”(NO FILE)”
*方法创建思路:1.在一个类中创建一个方法:
* 第一、得到文件的抽象路径
* 第二、判断路径是否准确,否则打印 NO FILE
* 第三、路径正确,判断是否为文件,如果为文件,则打印文件名
* 第四、路径不是文件名则判断是否为文件夹名称,如果为文件夹,调用递归方法打印文件夹中所有文件夹及文件
*/
public class ListFileRecursion{

public static void listFile(String filePath){
try{
//1.得到文件的抽象路径
File file = new File(filePath);
//2.判断路径是否准确
if(file.exists()){
//3.如果路径指向一个文件则打印该文件名
if(file.isFile()){
System.out.println(file.getName());
//4.如果路径指向一个文件夹则打印该文件夹下所有的子文件夹和文件
}else if(file.isDirectory()){
System.out.println(file.toString());
File[] fileArray = file.listFiles();
//打印文件夹下文件数量
//System.out.println(" includes "+ fileArray.length +" files/folders directly.");
//递归打印文件夹下所有文件
for(File subFile : fileArray){
listFile(subFile.toString());
}
}
}else if(!file.isDirectory()){
//如果路径指向一个文件,则打印文件名
System.out.println(file.toString());
}else{
//如果路径指向不存在的文件则打印:”(NO FILE)”
System.out.println("NO FILE");
}

}catch(Exception e){
e.printStackTrace();
}
}

public static void main(String args[]){
//在路径中如果用单斜杠‘\’,java中会认为是转义字符,所以在路径上全部加双斜杠‘\\’。
listFile("C:\\oracle");

}
}

 

 

原文地址:http://chwshuang.iteye.com/blog/846141

 

 

 

...