JAVA实现遍历文件夹下的所有文件(递归调用和非递归调用)
JAVA遍历文件夹下的所有文件(递归调用和非递归调用)
1.不使用递归的方法调用.
publicvoidtraverseFolder1(Stringpath){ intfileNum=0,folderNum=0; Filefile=newFile(path); if(file.exists()){ LinkedList<File>list=newLinkedList<File>(); File[]files=file.listFiles(); for(Filefile2:files){ if(file2.isDirectory()){ System.out.println("文件夹:"+file2.getAbsolutePath()); list.add(file2); fileNum++; }else{ System.out.println("文件:"+file2.getAbsolutePath()); folderNum++; } } Filetemp_file; while(!list.isEmpty()){ temp_file=list.removeFirst(); files=temp_file.listFiles(); for(Filefile2:files){ if(file2.isDirectory()){ System.out.println("文件夹:"+file2.getAbsolutePath()); list.add(file2); fileNum++; }else{ System.out.println("文件:"+file2.getAbsolutePath()); folderNum++; } } } }else{ System.out.println("文件不存在!"); } System.out.println("文件夹共有:"+folderNum+",文件共有:"+fileNum); }
2.使用递归的方法调用.
publicvoidtraverseFolder2(Stringpath){ Filefile=newFile(path); if(file.exists()){ File[]files=file.listFiles(); if(files.length==0){ System.out.println("文件夹是空的!"); return; }else{ for(Filefile2:files){ if(file2.isDirectory()){ System.out.println("文件夹:"+file2.getAbsolutePath()); traverseFolder2(file2.getAbsolutePath()); }else{ System.out.println("文件:"+file2.getAbsolutePath()); } } } }else{ System.out.println("文件不存在!"); } }
3,
publicstaticList<File>getFileList(StringstrPath){ Filedir=newFile(strPath); File[]files=dir.listFiles();//该文件目录下文件全部放入数组 if(files!=null){ for(inti=0;i<files.length;i++){ StringfileName=files[i].getName(); if(files[i].isDirectory()){//判断是文件还是文件夹 getFileList(files[i].getAbsolutePath());//获取文件绝对路径 }elseif(fileName.endsWith("avi")){//判断文件名是否以.avi结尾 StringstrFileName=files[i].getAbsolutePath(); System.out.println("---"+strFileName); filelist.add(files[i]); }else{ continue; } } } returnfilelist; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。