1. 程式人生 > >Java遞迴實現輸入任意目錄,列出檔案以及資料夾

Java遞迴實現輸入任意目錄,列出檔案以及資料夾

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盤發現程式直接崩了。。。檢查程式碼發現邏輯沒有問題,覺得可能是記憶體不夠所以遞迴沒辦法一直跑下去。用較小的資料夾測試沒有問題。