java递归遍历所有目录以及子目录的方法
因为工作需要,经常需要使用图片,而且放在不同的文件夹下,所有图片都放在一个大的文件夹下。
我想写一个程序,递归遍历所有目录以及子目录,并统计各种图片格式的数量有多少。
请各位大神提供一点思路。。
import java.io.File; import java.util.ArrayList; import java.util.List; public class Test { //存放文件路径,若需要,可以得到是哪里的图片 private static List<String> filelist = new ArrayList<String>(); static int png=0; static int gif=0; static int jpg=0; public static void main(String[] args) { getFileList("E:\\tu"); System.out.println(jpg); System.out.println(gif); System.out.println(png); } public static void getFileList(String strPath) { File dir = new File(strPath); File[] files = dir.listFiles(); if (files == null) return; for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { getFileList(files[i].getAbsolutePath()); } else { getFileList(files[i].getAbsolutePath()); String fileName = files[i].getName(); String suffix=fileName.substring(fileName.lastIndexOf(".")+1).toLowerCase(); if("jpg".equals(suffix)){ jpg++; }else if("png".equals(suffix)){ png++; }else if("gif".equals(suffix)){ gif++; } } } } }
public void showAllFiles(File dir) throws Exception{ File[] fs = dir.listFiles(); CompressPicDemo mypic = new CompressPicDemo(); for(int i=0; i<fs.length; i++){ System.out.println(fs[i].getAbsolutePath()); if(fs[i].isDirectory()){ try{ showAllFiles(fs[i]); }catch(Exception e){ e.printStackTrace(); } }else{ if(fs[i].getAbsolutePath().contains(".jpg")){ jpgnum++; }else if(fs[i].getAbsolutePath().contains(".gif")){ gifnum++; } } } }
public void loopDir(File file){ File[] files = file.listFiles(); for(File f : files){ if(f.isDirectory()){ loopDir(f); }else if(f.isFile()){ //分别累加不同格式图片个数 } } }