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;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。