返回顶部

收藏

JAVA遍历给定目录的所以文件和目录

更多
package com.cash;

import java.io.File;
import java.util.ArrayList;

public class FileTraversal {

    /**
     * 遍历给定目录下的所以目录和文件,并在所以目录前加上相应的缩进
     * @param file 需要遍历的目录
     * @param prefix 改目录相应的缩进
     * @return 返回组拼好的字符串
     */
    public static String realFile(File file,String prefix){
        StringBuffer sb = new StringBuffer("");

        if(file.isFile()){
            sb.append(prefix+file.getName());
        }else{
            sb.append(prefix+file.getName()+"\\\\");
        }
        if(file.isFile() || file.list().length == 0){
            return sb.toString();
        }else{
            File[] files = file.listFiles();
            files = sort(files);
            for(File f : files){
                sb.append("\\n");
                sb.append(realFile(f," "+prefix));
            }
            return sb.toString();
        }
    }
    /**
     * 将文件数组进行排序,所有目录在前,文件在后
     * @param files 要进行排序File数组
     * @return 返回一个排好顺序的File数组
     */
    private static File[] sort(File[] files) {
        ArrayList<File> list = new ArrayList<File>();
        for(File f : files){
            if(f.isDirectory()){
                list.add(f);
            }
        }
        for(File f : files){
            if(f.isFile()){
                list.add(f);
            }
        }
        return list.toArray(new File[files.length]);
    }

    public static void main(String[] args) {
        File file = new File("c:/abc");
        String str = realFile(file, "");
        System.out.println(str);
    }
}
//该片段来自于http://outofmemory.cn

标签:java,文件

收藏

0人收藏

支持

0

反对

0

发表评论