做一个程序,输入一个参数:开始目录,把此目录下的所有目录和文件结构导入到export.txt文件,结构如下
c:\目录1
****|_目录11
****|_目录12
****|*** |_目录121
****|_目录33
****|**|_目录122
****|**|_目录132
****|***** |_目录532
****|******** |_file.exe
****|_file.doc
****|_file2.txt我知道用递归可以列出来,但是要按照上面的这种格式,怎么都想不出来,请教各位!注意:上面格式的特点是,同一个目录下的目录和文件要连在一起的。这个不会,望解答!谢谢!
(还有一点:格式里的星号原本是空格来的,但是发表时空格被去掉了,所以我用同样长度的星号代替,请高手改回空格,多谢啦!)

解决方案 »

  1.   


    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
    */深度优先遍历的递归问价能访问咯,呵呵~
      

  2.   

    import java.io.File;
    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