做一个程序,输入一个参数:开始目录,把此目录下的所有目录和文件结构导入到export.txt文件,结构如下
c:\目录1
****|_目录11
****|_目录12
****|*** |_目录121
****|_目录33
****|**|_目录122
****|**|_目录132
****|***** |_目录532
****|******** |_file.exe
****|_file.doc
****|_file2.txt我知道用递归可以列出来,但是要按照上面的这种格式,怎么都想不出来,请教各位!注意:上面格式的特点是,同一个目录下的目录和文件要连在一起的。这个不会,望解答!谢谢!
(还有一点:格式里的星号原本是空格来的,但是发表时空格被去掉了,所以我用同样长度的星号代替,请高手改回空格,多谢啦!)
c:\目录1
****|_目录11
****|_目录12
****|*** |_目录121
****|_目录33
****|**|_目录122
****|**|_目录132
****|***** |_目录532
****|******** |_file.exe
****|_file.doc
****|_file2.txt我知道用递归可以列出来,但是要按照上面的这种格式,怎么都想不出来,请教各位!注意:上面格式的特点是,同一个目录下的目录和文件要连在一起的。这个不会,望解答!谢谢!
(还有一点:格式里的星号原本是空格来的,但是发表时空格被去掉了,所以我用同样长度的星号代替,请高手改回空格,多谢啦!)
import java.io.File;
import java.util.Stack;public class FloderIterator {
public static void main(String[] args) {
File file = new File("e:/root");
Stack<String> stack = new Stack<String>();
visitFile(file, stack);
}
public static void visitFile(File file, Stack<String> stack) {
stack.push(getStackString(stack));
String filePath = stack.toString().replaceAll("[\\[\\]\\, ]{1,}", "");
if(file.isFile()) {
System.out.println(filePath + "_" +file.getName());
}else {
if(1 == stack.size()) System.out.println(file.getAbsolutePath());
else System.out.println(filePath + "_目录" + file.getName());
File[] files = file.listFiles();
for(int i=0; i<files.length; i++) {
visitFile(files[i], stack);
}
}
stack.pop();
}
public static String getStackString(Stack<String> stack) {
String str = "";
if(!stack.isEmpty()) {
str += "***LEVEL"+(stack.size()) + "***";
str += "|";
}
return str;
}
}
/*
e:\root
***LEVEL1***|_35186e5a-0d94-4ea6-9b72-c5463cb3d1f3.html
***LEVEL1***|_目录35186e5a-0d94-4ea6-9b72-c5463cb3d1f3_files
***LEVEL1***|***LEVEL2***|_2_agentianle.jpg
***LEVEL1***|***LEVEL2***|_2_aniayxf.jpg
***LEVEL1***|***LEVEL2***|_2_argenchn.gif
***LEVEL1***|***LEVEL2***|_2_ayw215.gif
***LEVEL1***|***LEVEL2***|_2_bargio_susie.jpg
***LEVEL1***|***LEVEL2***|_目录ad1_data
***LEVEL1***|***LEVEL2***|***LEVEL3***|_210-60new.gif
***LEVEL1***|***LEVEL2***|***LEVEL3***|_adjs.js
***LEVEL1***|***LEVEL2***|***LEVEL3***|_adjs_002.js
***LEVEL1***|***LEVEL2***|***LEVEL3***|_csdn_ggmm.js
***LEVEL1***|***LEVEL2***|***LEVEL3***|_gmlog.gif
***LEVEL1***|***LEVEL2***|***LEVEL3***|_gmlog_002.gif
***LEVEL1***|***LEVEL2***|***LEVEL3***|_neon_csdn_735x60.gif
***LEVEL1***|***LEVEL2***|***LEVEL3***|_Thumbs.db
***LEVEL1***|***LEVEL2***|_目录ad2_data
***LEVEL1***|***LEVEL2***|***LEVEL3***|_adjs.js
***LEVEL1***|***LEVEL2***|***LEVEL3***|_adjs_002.js
***LEVEL1***|***LEVEL2***|***LEVEL3***|_adjs_003.js
***LEVEL1***|***LEVEL2***|_目录ad4_data
***LEVEL1***|***LEVEL2***|***LEVEL3***|_ads
***LEVEL1***|***LEVEL2***|***LEVEL3***|_rsscache.js
***LEVEL1***|***LEVEL2***|***LEVEL3***|_rsscache_002.js
***LEVEL1***|***LEVEL2***|***LEVEL3***|_show_ads.js
***LEVEL1***|***LEVEL2***|***LEVEL3***|_test_domain.js
***LEVEL1***|***LEVEL2***|_目录ReplyT_data
***LEVEL1***|***LEVEL2***|***LEVEL3***|_CsdnScriptWorkshop.js
***LEVEL1***|***LEVEL2***|***LEVEL3***|_CsdnUbbEditor.css
***LEVEL1***|***LEVEL2***|***LEVEL3***|_CsdnUbbEditor.js
***LEVEL1***|***LEVEL2***|_Thumbs.db
***LEVEL1***|_3832557_1269927407Bxeg.jpg
***LEVEL1***|_3832557_1269927408Hfei.jpg
***LEVEL1***|_3832557_1269927409Ycwf.jpg
***LEVEL1***|_423924388.htm
***LEVEL1***|_目录423924388_files
***LEVEL1***|***LEVEL2***|_969aea99-e8a9-42da-838c-36a7f084b914.htm
***LEVEL1***|***LEVEL2***|_目录969aea99-e8a9-42da-838c-36a7f084b914_data
***LEVEL1***|***LEVEL2***|***LEVEL3***|_ads
***LEVEL1***|***LEVEL2***|***LEVEL3***|_google_ads.js
***LEVEL1***|***LEVEL2***|***LEVEL3***|_google_service.js
***LEVEL1***|***LEVEL2***|_a.gif
***LEVEL1***|***LEVEL2***|_a_main_EuUH_2a_040250.swf
***LEVEL1***|***LEVEL2***|_目录ime_data
***LEVEL1***|***LEVEL2***|***LEVEL3***|_ajaxproxy.htm
***LEVEL1***|***LEVEL2***|***LEVEL3***|_webpager.js
***LEVEL1***|***LEVEL2***|_Thumbs.db
***LEVEL1***|_春晓,c.html
***LEVEL1***|_目录春晓,c_files
***LEVEL1***|***LEVEL2***|_1.gif
***LEVEL1***|***LEVEL2***|_2.gif
***LEVEL1***|***LEVEL2***|_Thumbs.db
*/深度优先遍历的递归问价能访问咯,呵呵~
import java.util.Stack;public class FileTreeTest { public static void main(String[] args) {
FileTree tree = new FileTree("D:/green/apache/apache-tomcat-5.5.12/server");
tree.tree();
}
}class FileTree { private File root; public FileTree(File root) {
this.root = root;
} public FileTree(String rootName) {
this(new File(rootName));
} public void tree() {
Stack<Boolean> lastStack = new Stack<Boolean>();
tree(root, 0, lastStack);
} private void tree(File dir, int level, Stack<Boolean> lastStack) {
if(dir == null || !dir.exists()) {
return;
}
printFile(dir, level, lastStack); if(dir.isFile()) {
return;
}
File[] children = dir.listFiles();
for(int i = 0; i < children.length; i++) {
lastStack.push(i == children.length - 1);
tree(children[i], level + 1, lastStack);
lastStack.pop();
}
} private void printFile(File file, int level, Stack<Boolean> lastStack) {
for(int i = 0, k = lastStack.size() - 1; i < k; i++) {
System.out.print(lastStack.get(i) ? " " : "│ ");
}
if(level > 0) {
System.out.print(lastStack.get(lastStack.size() - 1) ? "└ " : "├ ");
}
System.out.println(level == 0 ? file.getPath() : file.getName());
}
}D:\green\apache\apache-tomcat-5.5.12\server
├ classes
├ lib
│ ├ catalina-ant-jmx.jar
│ ├ catalina-ant.jar
│ ├ catalina-cluster.jar
│ ├ catalina-optional.jar
│ ├ catalina-storeconfig.jar
│ ├ catalina.jar
│ ├ commons-modeler.jar
│ ├ servlets-cgi.renametojar
│ ├ servlets-default.jar
│ ├ servlets-invoker.jar
│ ├ servlets-ssi.renametojar
│ ├ servlets-webdav.jar
│ ├ tomcat-ajp.jar
│ ├ tomcat-apr.jar
│ ├ tomcat-coyote.jar
│ ├ tomcat-http.jar
│ └ tomcat-util.jar
└ webapps
├ host-manager
│ ├ host-manager.xml
│ ├ images
│ │ ├ add.gif
│ │ ├ code.gif
│ │ ├ design.gif
│ │ ├ docs.gif
│ │ ├ fix.gif
│ │ ├ jakarta-logo.gif
│ │ ├ tomcat.gif
│ │ ├ update.gif
│ │ └ void.gif
│ ├ manager.xml
│ └ WEB-INF
│ ├ lib
│ │ └ catalina-host-manager.jar
│ └ web.xml
└ manager
├ html-manager-howto.html
├ images
│ ├ add.gif
│ ├ code.gif
│ ├ design.gif
│ ├ docs.gif
│ ├ fix.gif
│ ├ jakarta-logo.gif
│ ├ tomcat.gif
│ ├ update.gif
│ └ void.gif
├ manager-howto.html
├ manager.xml
├ status.xsd
├ WEB-INF
│ ├ lib
│ │ ├ catalina-manager.jar
│ │ └ commons-fileupload-1.0.jar
│ └ web.xml
└ xform.xsl