加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java 递归列出目录下的文件以及子目录

发布时间:2020-12-14 23:30:02 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 import java.io.File;import java.io.FilenameFilter;import java.io.FileFilter;/** * ----------------------------------------------------------

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

 
import java.io.File;
import java.io.FilenameFilter;
import java.io.FileFilter;

/**
 * -----------------------------------------------------------------------------
 * This program demonstrates how to list the file or subdirectories in a
 * given directory
 *
 * @version 1.0
 * -----------------------------------------------------------------------------
 */

public class ListFilesSubs {


    /**
     * Used to list the files / subdirectories in a given directory.
     * @param dir Directory to start listing from
     */
    private static void doSimpleFileListing(String dirName) {

        System.out.println();
        System.out.println("Simple file listing...");
        System.out.println("----------------------");

        File dir = new File(dirName);
        
        String[] children = dir.list();

        printFiles(children,dirName);

    }


    /**
     * Used to list the files / subdirectories in a given directory and also
     * provide a filter class.
     * @param dir Directory to start listing from
     * @param ff  A string that can be used to filter out files from the
     *            returned list of files. In this example,the String
     *            values is used to only return those values that start
     *            with the given String.
     */
    private static void doFileFilterListing(String dirName,String ff) {

        System.out.println("Filter file listing...");
        System.out.println("----------------------");

        final String fileFilter = ff;

        File           dir     = new File(dirName);
        FilenameFilter filter  = null;

        if (fileFilter != null) {

            // It is also possible to filter the list of returned files.
            // This example uses the passed in String value (if any) to only
            // list those files that start with the given String.
            filter = new FilenameFilter() {
                public boolean accept(File dir,String name) {
                    return name.startsWith(fileFilter);
                }
            };
        }

        String[] children = dir.list(filter);

        printFiles(children,dirName);

    }


    /**
     * Used to list the files / subdirectories in a given directory and also
     * provide a filter class that only lists the directories.
     * @param dir Directory to start listing from
     */
    private static void doFileFilterDirectoryListing(String dirName) {

        System.out.println("Filter Directory listing...");
        System.out.println("---------------------------");

        File dir = new File(dirName);

        // The list of files can also be retrieved as File objects. In this
        // case,we are just listing all files in the directory. For the sake
        // of this example,we will not print them out here.
        File[] files = (new File(dirName)).listFiles();

        // This filter only returns directories
        FileFilter dirFilter = new FileFilter() {
            public boolean accept(File dir) {
                return dir.isDirectory();
            }
        };

        files = dir.listFiles(dirFilter);

        for (int i=0; i<files.length; i++) {
            System.out.println("[D] : " + files[i]);
        }
        System.out.println();


    }


    /**
     * Utility method to print the list of files to the terminal
     * @param children A String array of the file names to print out
     * @param dirName  The given directory to start the listing at.
     */
    private static void printFiles(String[] children,String dirName) {

        if (children == null) {
            System.out.println("Error with " + dirName);
            System.out.println("Either directory does not exist or is not a directory");
        } else {
            for (int i=0; i<children.length; i++) {
                // Get filename of file or directory
                String filename = children[i];
                if ((new File(dirName + File.separatorChar + filename)).isDirectory()) {
                    System.out.print("[D] : ");
                } else {
                    System.out.print("[F] : ");
                }
                System.out.println(dirName + File.separatorChar + filename);
            }
        }
        System.out.println();

    }

    /**
     * Sole entry point to the class and application.
     * @param args Array of String arguments.
     */
    public static void main(String[] args) {

        // Call the simple file listing method
        doSimpleFileListing("new_dir");

        // Now do the file listing but pass in a String to filter the file list
        if (args.length == 0) {
            doFileFilterListing("new_dir",null);
        } else {
            doFileFilterListing("new_dir",args[0]);
        }

        // Now do another example that only prints out the directories
        doFileFilterDirectoryListing("new_dir");

    }
}

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读