[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re: PathTree.java




>今回はディレクトリー名しか表示してませんが、
>こんなFileFilterを書けば DOS の tree.exe の -f オプションのように
>ファイルも一緒にツリー表示できると思います。
>
>class FileOnlyFilter implements FileFilter {
>  public boolean accept(File file) { return file.isFile(); }
>}


反響は無いようですが続けます。

FileTree.java
========================
// show directory tree
// FileTree.java
// copyright(c) 1999 ENDO Yasuyuki <yasuyuki@xxxxxxxxxx>
// 参考図書: 青柳達也『Java APIプログラミングガイド』p.106〜107
//           1996 工学図書 ISBN4-7692-0372-1

import java.io.*;
import java.util.*;

public class FileTree {
  private static final String LEAF     = "|---";//途中の子供
  private static final String BOTTOM   = "+---";//最後の子供
  private static final String SUBTREE  = "|   ";//途中の子供の下位ノード
  private static final String BLANK    = "    ";//最後の子供の下位ノード

  public void retrieve(File dir, String pref) {
    class DirectoryFilter implements FileFilter {
      public boolean accept(File file) { return file.isDirectory(); }
    }
    class FileOnlyFilter implements FileFilter {
      public boolean accept(File file) { return file.isFile(); }
    }
    File[] subdirs = dir.listFiles(new DirectoryFilter());
    File[] files = dir.listFiles(new FileOnlyFilter());
    String fbefore = null;
    if (subdirs.length > 0) fbefore = SUBTREE;
    else                    fbefore = BLANK;
    for (int i=0; i<files.length; i++) System.out.println(pref + fbefore + files[i].getName());
    for (int i=0; i<subdirs.length; i++) {
      String before = null;
      String next = null;
      if (i == subdirs.length - 1) {
        before = pref + BOTTOM;
        next = BLANK;
      } else {
        before = pref + LEAF;
        next = SUBTREE;
      }
      System.out.println(before + subdirs[i].getName());
      retrieve(subdirs[i], pref + next);
    }
  }

  public void retrieve(String dir) {
    retrieve(new File(dir), " ");
  }

  public static void main(String[] args) {
    FileTree ftree = new FileTree();
    System.out.println(args[0]);
    ftree.retrieve(args[0]);
  }
}
========================
-- 
えんどう やすゆき <yasuyuki@xxxxxxxxxx>
http://www.javaopen.org/jfriends/ (Java互助会ホームページ)