用java 编写一个程序,在命令行中以树状结构展现特定的文件夹及其子文件(夹)!

用java 编写一个程序,在命令行中以树状结构展现特定的文件夹及其子文件(夹)!,第1张

当然在理论上是可以实现的,可以将所有的子文件都以树形结构出来,但是文件很多的时候就会非常纠结

我理解中的树形结构大概是这样(不知道这样的图形是不是你想要的)

a

|

------------------

| | |

b cd

以下是代码,找了系统盘下子文件较少的文件夹 C:/Windows/AppPatch,当然也可以换成你自己的路径来测试

import java.io.File

public class FileTree {

/**

* @param args

*/

public static void main(String[] args) {

try{

File file = new File("C:\\Windows\\AppPatch")

if(file.isDirectory()){

String[] fileList = file.list()

String fileName = file.getName()

int allLength = 0

for(int i=0i<fileList.lengthi++){

allLength += (fileList[i]+" ").length()

}

for(int i=0i<allLength/2i++){

System.out.print(" ")

}

System.out.println(fileName)

for(int i=0i<allLength/2i++){

System.out.print(" ")

}

for(int i=0i<fileName.length()/2i++){

System.out.print(" ")

}

System.out.println("|")

for(int i=0i<allLengthi++){

System.out.print("-")

}

System.out.println("")

for(int i=0i<fileList.lengthi++){

int tmpLength = fileList[i].length()

int subLength = tmpLength/2

int lastLength = tmpLength - subLength - 1

for(int j=0j<subLengthj++){

System.out.print(" ")

}

System.out.print("|")

for(int j=0j<lastLengthj++){

System.out.print(" ")

}

System.out.print(" ")

}

System.out.println("")

for(int i=0i<fileList.lengthi++){

System.out.print(fileList[i]+" ")

}

}

else{

System.out.println("对不起,你提供的路径不是文件夹")

}

}

catch (Exception e) {

e.printStackTrace()

}

}

}

这时可以发现输出每一个子文件/子文件夹的名字已经比较长,要是再想输出这些子文件夹里面的文件,那幅图个人觉得相当纠结,也许是我水平没够吧或是我理解错了你说的树形结构

希望以上代码对你有帮助

可以仿照TreeView的类型,TreeView的Nodes属性是TreeNodeCollection类,

public class TreeNodeCollection : IList, ICollection, IEnumerable,

所以你仿照这种结构建立你自己的类,同样实现这三种接口就行了。

建立一个tv_1控件

long rows,i,cur_len,p

string mycode,str,myname,mylabel

long handle_current,h1

treeviewitem item

treeviewitem newitem

h1=tv_1.finditem(currenttreeitem!,0)

handle_current=tv_1.finditem(childtreeitem!,h1)

if handle_current<0 then

tv_1.getitem(h1,item)

mylabel=item.label

p=pos(mylabel,"--")

mycode=mid(mylabel,1,p - 1)

cur_len=len(mycode)

str="id like'"+mycode+"%'"

dw_1.setfilter(str)

dw_1.filter()

rows=dw_1.rowcount()

for i=1 to rows

mycode=dw_1.getitemstring(i,"no")

myname=dw_1.getitemstring(i,"name")

if len(mycode)=cur_len+2 then

newitem.label=mycode+"--"+myname

newitem.pictureindex=(cur_len+2)/2+1

newitem.selectedpictureindex=(cur_len+2)/2+2

tv_1.insertitemlast(h1,newitem)

end if

next

end if

tv_1.expanditem(h1)

return 0

再建立一个数据窗口,里面的数据库有两个字段,no和name

no字段例子:01第一层,0102第一层的第二个结点,0201第二层的第一个结点

主窗口的OPEN事件:(双击窗口任何位置,别点在控件上)

tv_1.insertitemlast(0,"根结点",1)

dw_1.settransobject(sqlca)

dw_1.retrieve()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11744877.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存