Java遞迴實現輸入任意目錄,列出檔案以及資料夾
阿新 • • 發佈:2019-01-25
import java.io.File;
import java.util.ArrayList;
import java.util.Scanner;
public class IOPractice {
public static ArrayList<String> dirs=new ArrayList<>();
public static ArrayList<String> files=new ArrayList<>();
public static void isDir(File file){
if(file.isDirectory()){
dirs.add(file.getName());
File[] list=file.listFiles();
for (File f : list){
isDir(f);
}
}else{
files.add(file.getName());
}
}
public static void main(String []args){
String filePath;
Scanner in = new Scanner(System.in);
filePath=in.nextLine();
File file=new File(filePath);
isDir(file);
int countforDir=0;
int countforFile=0;
System.out.println("資料夾有:"+IOPractice.dirs.size()+"個");
for (String dir : IOPractice.dirs){
countforDir++;
System.out.printf("%20s",dir);
if(countforDir%8==0){
System.out.println();
}
}
System.out .println();
System.out.println("----------------------------------------------------------------------------------------------");
System.out.println("檔案有:"+IOPractice.files.size()+"個");
for(String f : IOPractice.files){
countforFile++;
System.out.printf("%40s",f);
if(countforFile%5==0){
System.out.println();
}
}
}
}
一開始跑E盤發現程式直接崩了。。。檢查程式碼發現邏輯沒有問題,覺得可能是記憶體不夠所以遞迴沒辦法一直跑下去。用較小的資料夾測試沒有問題。