- 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://www.codesnippet.cn/detail/151120137213.html
来源: http://www.codesnippet.cn/detail/151120137213.html