[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互助会ホームページ)