日期:2014-05-20  浏览次数:20821 次

递归遍历所有目录以及子目录的方法
因为工作需要,经常需要使用图片,而且放在不同的文件夹下,所有图片都放在一个大的文件夹下。
我想写一个程序,递归遍历所有目录以及子目录,并统计各种图片格式的数量有多少。
请各位大神提供一点思路。。

------解决方案--------------------
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()){
//分别累加不同格式图片个数
}
}
}