Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7906925
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 3, 20262026-06-03T11:11:15+00:00 2026-06-03T11:11:15+00:00

I know of the Apache Commons IO library for file directory processing in Java.

  • 0

I know of the Apache Commons IO library for file directory processing in Java. However, List all files from a directory recursively with Java talks about native support in Java 7.

Does anyone have experience on how to recursively list/read files in a directory using Java 7?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-03T11:11:17+00:00Added an answer on June 3, 2026 at 11:11 am

    There’s a tutorial on it. Basically you implement a Visitor which can then be called as directories are entered, exited, and files are encountered. There is support for determining if files are symbolic links, and options to follow the symbolic link (if you care to do so). A quick read on what Java Paths are might be useful, and the entire documentation starts here.

    import static java.nio.file.FileVisitResult.*;
    
    public static class PrintFiles
        extends SimpleFileVisitor<Path> {
    
        // Print information about
        // each type of file.
        @Override
        public FileVisitResult visitFile(Path file,
                                       BasicFileAttributes attr) {
            if (attr.isSymbolicLink()) {
                System.out.format("Symbolic link: %s ", file);
            } else if (attr.isRegularFile()) {
                System.out.format("Regular file: %s ", file);
            } else {
                System.out.format("Other: %s ", file);
            }
            System.out.println("(" + attr.size() + "bytes)");
            return CONTINUE;
        }
    
        // Print each directory visited.
        @Override
        public FileVisitResult postVisitDirectory(Path dir,
                                              IOException exc) {
            System.out.format("Directory: %s%n", dir);
            return CONTINUE;
        }
    
        // If there is some error accessing
        // the file, let the user know.
        // If you don't override this method
        // and an error occurs, an IOException 
        // is thrown.
        @Override
        public FileVisitResult visitFileFailed(Path file,
                                           IOException exc) {
            System.err.println(exc);
            return CONTINUE;
        }
    }
    

    A second example (from the Java implementation of find) that illustrates file walking could be easily modified to “match” all files.

    /*
     * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions
     * are met:
     *
     *   - Redistributions of source code must retain the above copyright
     *     notice, this list of conditions and the following disclaimer.
     *
     *   - Redistributions in binary form must reproduce the above copyright
     *     notice, this list of conditions and the following disclaimer in the
     *     documentation and/or other materials provided with the distribution.
     *
     *   - Neither the name of Oracle or the names of its
     *     contributors may be used to endorse or promote products derived
     *     from this software without specific prior written permission.
     *
     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
     * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
     * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
     * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
     * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     */
    
    import java.io.*;
    import java.nio.file.*;
    import java.nio.file.attribute.*;
    import static java.nio.file.FileVisitResult.*;
    import static java.nio.file.FileVisitOption.*;
    import java.util.*;
    
    /**
     * Sample code that finds files that
     * match the specified glob pattern.
     * For more information on what
     * constitutes a glob pattern, see
     * http://docs.oracle.com/javase/javatutorials/tutorial/essential/io/fileOps.html#glob
     *
     * The file or directories that match
     * the pattern are printed to
     * standard out.  The number of
     * matches is also printed.
     *
     * When executing this application,
     * you must put the glob pattern
     * in quotes, so the shell will not
     * expand any wild cards:
     *     java Find . -name "*.java"
     */
    
    public class Find {
    
        /**
         * A {@code FileVisitor} that finds
         * all files that match the
         * specified pattern.
         */
        public static class Finder
            extends SimpleFileVisitor<Path> {
    
            private final PathMatcher matcher;
            private int numMatches = 0;
    
            Finder(String pattern) {
                matcher =
                    FileSystems.getDefault()
                        .getPathMatcher("glob:" + pattern);
            }
    
            // Compares the glob pattern against
            // the file or directory name.
            void find(Path file) {
                Path name = file.getFileName();
                if (name != null && matcher.matches(name)) {
                    numMatches++;
                    System.out.println(file);
                }
            }
    
            // Prints the total number of
            // matches to standard out.
            void done() {
                System.out.println("Matched: "
                    + numMatches);
            }
    
            // Invoke the pattern matching
            // method on each file.
            @Override
            public FileVisitResult
                visitFile(Path file,
                    BasicFileAttributes attrs) {
                find(file);
                return CONTINUE;
            }
    
            // Invoke the pattern matching
            // method on each directory.
            @Override
            public FileVisitResult
                preVisitDirectory(Path dir,
                    BasicFileAttributes attrs) {
                find(dir);
                return CONTINUE;
            }
    
            @Override
            public FileVisitResult
                visitFileFailed(Path file,
                    IOException exc) {
                System.err.println(exc);
                return CONTINUE;
            }
        }
    
        static void usage() {
            System.err.println("java Find <path>" +
                " -name \"<glob_pattern>\"");
            System.exit(-1);
        }
    
        public static void main(String[] args)
            throws IOException {
    
            if (args.length < 3 
                || !args[1].equals("-name"))
                usage();
    
            Path startingDir = Paths.get(args[0]);
            String pattern = args[2];
    
            Finder finder = new Finder(pattern);
            Files.walkFileTree(startingDir, finder);
            finder.done();
        }
    }
    

    On my system (Linux / Fedora), it worked well; however, I was only testing it for functionality, and playing around with it. I didn’t stress test it for performance or any other meaningful measurement (beyond “it works”).

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I want to know if the methods from StringUtils from Apache Commons Lang library
I'm trying to use Apache Commons Net for FTP file transfers. Problem is files
I'm using Apache Commons VFS (Virtual File System) to access some files over SFTP.
I am using the Apache commons logging library and log4j to generate my log
Ok so I'm trying to use Apache Commons Math library to compute a double
I am using Apache Commons Configuration to read a properties file, and I am
I am trying to fill a RealVector (from Apache Commons Math) with values. I
I have a working prototype of a Java application that is using Apache Commons
May I know what is the best practice of using org.apache.commons.logging.LogFactory.getLog? For me, I
I'm using Apache Commons HttpClient to grab some data from a server. My problem

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.