Searches through the directory tree : Directory « File « Java Tutorial






/* 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 */

import java.io.File;

/**
 * 
 * FileUtils is a collection of routines for common file system operations.
 * 
 * @author Dan Jemiolo (danj)
 * 
 */

public final class FileUtils {

  /**
   * 
   * This is a convenience method that calls find(File, String, boolean) with
   * the last parameter set to "false" (does not match directories).
   * 
   * @see #find(File, String, boolean)
   * 
   */
  public static File find(File contextRoot, String fileName) {
    return find(contextRoot, fileName, false);
  }

  /**
   * 
   * Searches through the directory tree under the given context directory and
   * finds the first file that matches the file name. If the third parameter is
   * true, the method will also try to match directories, not just "regular"
   * files.
   * 
   * @param contextRoot
   *          The directory to start the search from.
   * 
   * @param fileName
   *          The name of the file (or directory) to search for.
   * 
   * @param matchDirectories
   *          True if the method should try and match the name against directory
   *          names, not just file names.
   * 
   * @return The java.io.File representing the <em>first</em> file or
   *         directory with the given name, or null if it was not found.
   * 
   */
  public static File find(File contextRoot, String fileName, boolean matchDirectories) {
    if (contextRoot == null)
      throw new NullPointerException("NullContextRoot");

    if (fileName == null)
      throw new NullPointerException("NullFileName");

    if (!contextRoot.isDirectory()) {
      Object[] filler = { contextRoot.getAbsolutePath() };
      String message = "NotDirectory";
      throw new IllegalArgumentException(message);
    }

    File[] files = contextRoot.listFiles();

    //
    // for all children of the current directory...
    //
    for (int n = 0; n < files.length; ++n) {
      String nextName = files[n].getName();

      //
      // if we find a directory, there are two possibilities:
      //
      // 1. the names match, AND we are told to match directories.
      // in this case we're done
      //
      // 2. not told to match directories, so recurse
      //
      if (files[n].isDirectory()) {
        if (nextName.equals(fileName) && matchDirectories)
          return files[n];

        File match = find(files[n], fileName);

        if (match != null)
          return match;
      }

      //
      // in the case of regular files, just check the names
      //
      else if (nextName.equals(fileName))
        return files[n];
    }

    return null;
  }

}








11.4.Directory
11.4.1.Create a directory (or several directories)
11.4.2.Create directory
11.4.3.Create directory along with required nonexistent parent directories
11.4.4.Create a directory; all ancestor directories must exist
11.4.5.Create a directory; all non-existent ancestor directories are automatically created
11.4.6.Create a directories recursively
11.4.7.Creates a new and empty directory in the default temp directory using the given prefix.
11.4.8.Determine File or Directory
11.4.9.Deleting a Directory (an empty directory)
11.4.10.Determine if file or directory exists
11.4.11.Determine if File or Directory is hidden
11.4.12.If a file or directory readable
11.4.13.Get name of parent directory
11.4.14.Get name of specified file or directory
11.4.15.Get parent directory as a File object
11.4.16.Get the content of a directory
11.4.17.Checks, whether the child directory is a subdirectory of the base directory.
11.4.18.Delete file or directory
11.4.19.Delete directory recursively
11.4.20.Delete file or directory when virtual machine terminates
11.4.21.Calculate directory size
11.4.22.Change last modified time of a file or directory
11.4.23.Mark file or directory Read Only
11.4.24.Rename file or directory
11.4.25.Moving a File or Directory to Another Directory
11.4.26.Search for files recursively
11.4.27.Traversing all files and directories under dir
11.4.28.Traversing only directories under dir
11.4.29.Traversing only files under dir
11.4.30.Copying a Directory
11.4.31.Check if a directory is not empty
11.4.32.Getting the Current Working Directory
11.4.33.Get all files and folders under a certain folder and save them to a set
11.4.34.Recursively search a directory tree
11.4.35.Searches through the directory tree