今天在用extjs tree的时候发神经,想用java打印出文件加的树状结构,结果和在命令行敲tree要一样。
自己做第一遍的结果像下面这样:
test
├1
│├1.txt
│├11
││├111.txt
││└112.txt
│└12
比如结点1没有兄弟了,则它的所有的孩子的左边的那条线就不该出现。
想了好久, 没有好的结果, 在网上找了一个, 发现消化起来不简单,可能我比较笨。
今天把问题拿出来, 感兴趣的来试试。贴代码有注释能让人很快看懂的有奖。
我的版本贴在
http://blog.csdn.net/sunxing007/archive/2008/11/26/3383182.aspx
自己做第一遍的结果像下面这样:
test
├1
│├1.txt
│├11
││├111.txt
││└112.txt
│└12
比如结点1没有兄弟了,则它的所有的孩子的左边的那条线就不该出现。
想了好久, 没有好的结果, 在网上找了一个, 发现消化起来不简单,可能我比较笨。
今天把问题拿出来, 感兴趣的来试试。贴代码有注释能让人很快看懂的有奖。
我的版本贴在
http://blog.csdn.net/sunxing007/archive/2008/11/26/3383182.aspx
import java.io.*;
public class TestTree {
public static void main(String[] args) {
File f = new File(args[0]); //输入路径
System.out.println(f.getName());
Tree(f,1);
}
private static void Tree (File f,int level) {
File[] next = f.listFiles();
String sign = "└ ";
for(int i=0; i < level ;i++) {
sign = " " + sign;
}
for(int i=0; i< next.length ; i++) {
System.out.println(sign + next[i].getName());
if(next[i].isDirectory()){
Tree(next[i],level + 1);
}
}
}
}
test
└ 1
└ 1.txt
└ 11
└ 111.txt
└ 112.txt
└ 12
└ test.pdf
肯定不合要求了,你在cmd下面输入命令tree看看。
结果我已经有了, 我只想看看有没有更好的程序或解释
import java.io.File;
public class ShowFile { public static void main(String[] args) {
File f=new File("G://JAVA//File类常用方法//创建文件名//A");
tree(f); }
private static void tree(File f){
File[] childs=f.listFiles();
for(int i=0;i<childs.length;i++){
System.out.println(childs[i]);
if(childs[i].isDirectory()){
tree(childs[i]);
}
}
}
}
import java.io.File;
import java.util.ArrayList;
import java.util.List;public class PrintFileTree {
public static void main(String args[])
{
List<Infor> list=new ArrayList<Infor>();
list=show("E:\\我的作品\\lianxi\\lianxi\\src\\file",0);
for(Infor inf:list)
{
for(int i=0;i<inf.jibie;i++)
System.out.print(" ");
System.out.print(inf.fileName);
System.out.println();
}
}
public static List<Infor> show(String file,int i)
{
List<Infor> list=new ArrayList<Infor>();
File myFile=new File(file);
if(myFile.isDirectory())
{
list.add(new Infor(myFile.getName(),i));
File[] fileCollection=myFile.listFiles();
for(File f:fileCollection)
{
list.addAll(show(f.getAbsolutePath(),i+1));
}
}
else
{
list.add(new Infor(myFile.getName(),i));
}
return list;
}}
class Infor{
String fileName;
int jibie;
public Infor(String fileName,int i)
{
this.fileName=fileName;
jibie=i;
}
}