예제 #1
0
파일: File.java 프로젝트: talentkimi/kimi
  /**
   * List all files in this directory.
   *
   * @param recursive true to list files recursively.
   * @param filter the filter to use.
   */
  public File[] listFiles(boolean recursive, FileFilter filter) {
    if (!isDirectory()) return null;

    // Simple list
    if (!recursive && filter == null) {
      String[] filenames = list();
      File[] files = newFileArray(filenames.length);
      for (int i = 0; i < files.length; i++) {
        files[i] = newFile(this, filenames[i]);
      }
      return files;
    }

    // Complex list
    UtilList list = new UtilList();
    addFilesToList(list, this, recursive, filter);
    File[] files = newFileArray(list.size());
    list.toArray(files);
    return files;
  }
예제 #2
0
파일: File.java 프로젝트: talentkimi/kimi
  /**
   * Adds files from the given directory into the list.
   *
   * @param list the file list.
   * @param dir the directory.
   * @param recursive true to list files recursively.
   * @param filter the filter to use.
   */
  private void addFilesToList(UtilList list, File dir, boolean recursive, FileFilter filter) {
    String[] filenames = dir.list();
    for (int i = 0; i < filenames.length; i++) {
      File file = (File) newFile(dir, filenames[i]);

      // Recursive
      if (recursive) {
        if (file.isDirectory()) {
          addFilesToList(list, file, recursive, filter);
        }
      }

      // Filter
      if (filter != null) {
        if (!filter.accept(file)) {
          continue;
        }
      }

      // Add
      list.add(file);
    }
  }