Java 文件夹递归遍历
import java.io.File; public class Demo1 { public static void main(String[] args) { File dir=new File("D:\\CCC");//浏览F盘a文件夹下的所有内容 listFile(dir,""); } public static void listFile(File dir,String spance) { File[] files=dir.listFiles(); //列出所有的子文件 for(File file :files) { if(file.isFile())//如果是文件,则输出文件名字 { System.out.println(spance+file.getName()); }else if(file.isDirectory())//如果是文件夹,则输出文件夹的名字,并递归遍历该文件夹 { System.out.println(spance+file.getName()); listFile(file,"|--"+spance);//递归遍历 } } } }
解压效果如下:
在项目中,往往会遇到,遍历文件夹中的文件,分清里面配置文件的父子关系,代码如下:
/** * 文件夹遍历 * @param path * @throws Exception */ public void traverse(String path,String parent_id) throws Exception { System.out.println("path---->" + path); File file = new File(path); Map<String, Object> map = new HashMap<String, Object>(); if (file.exists()) { File[] files = file.listFiles(); if (files.length == 0) { System.out.println("文件夹是空的!"); return; } else { String k_id = UuidUtil.get32UUID(); for (File file2 : files) { if (file2.isFile()){//文件 if (file2.getName().endsWith(".cfg")) { System.out.println("文件:" + file2.getAbsolutePath()); map = readCfg(new FileInputStream(file2)); System.out.println("-------------"+file2.getAbsolutePath()+"--start-----------"); map.put("k", kvalue); parent_id = k_id; System.out.println("-------------"+file2.getAbsolutePath()+"--end-----------"); } } } for (File file2 : files) { if (file2.isDirectory()) {//文件夹 traverse(request,file2.getAbsolutePath(),parent_id); parent_id = k_id; } } } } else { System.out.println("文件不存在!"); } }