把一个文件夹及所有子文件夹中包含的文件读取出来并且自己写一个排序函数将其全部打印出来

/*
 * @(#) FileTest.java 2008/09/12
 */

import java.io.File;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

/**
 * FileTest
 *
 * @version 1.0
 * @since 2008/09/12
 */
public class FileTest
{
    public static void main(String[] args)
    {
        File directory = new File("c:\\temp\\");
        List fileList = listAllFiles(directory);

        Set fileNameSet = new HashSet(fileList.size());
        for (int i = 0 ; i< fileList.size() ; i++)
        {
            File file = (File)fileList.get(i);
            fileNameSet.add(file.getAbsolutePath());
        }

        for (Iterator i = new TreeSet(fileNameSet).iterator() ; i.hasNext() ; )
        {
            System.out.println(i.next());
        }

    }


    private static List listAllFiles(File directory)
    {
        if (directory == null 
            || !directory.isDirectory()
        ){
            return null;
        }

        List fileList = new ArrayList();
        addSubFileList(directory, fileList);

        return fileList;
    }

    private static void addSubFileList(
        File file, 
        List fileList
    ){
        File[] subFileArray = file.listFiles();
        if (subFileArray == null
            || subFileArray.length == 0
        ){
            return;
        }

        for (int i = 0 ; i < subFileArray.length ; i++)
        {
            File subFile = subFileArray[i];
            if (subFile == null
            ){
                continue;
            }
            if (subFile.isFile()
            ){
                fileList.add(subFile);
                continue;
            }
            else if (subFile.isDirectory()
            ){
                addSubFileList(subFile, fileList);
            }
        }
    }
}

你可能感兴趣的:(java,C++,c,C#)