• Java 遍历指定路径下的所有文件和子文件夹


    1. package fileinfo;
    2. import java.io.File;
    3. public class FileInfo {
    4. private File fp;
    5. private int index;
    6. private int level;
    7. public FileInfo(File fp,int index,int level){
    8. this.fp=fp;
    9. this.index=index;
    10. this.level=level;
    11. }
    12. public File getFp() {
    13. return fp;
    14. }
    15. public int getIndex() {
    16. return index;
    17. }
    18. public int getLevel() {
    19. return level;
    20. }
    21. public void setIndex(int index) {
    22. this.index = index;
    23. }
    24. }

    1. package fileinfo;
    2. import java.io.File;
    3. import java.util.Stack;
    4. public class Test {
    5. private static void treeView(String path) {
    6. int cnt;
    7. File f = new File(path);
    8. if (f.isFile()) {
    9. System.out.println(f.getName());
    10. return;
    11. }
    12. Stack stk = new Stack();
    13. boolean foundDir;
    14. FileInfo finfo = new FileInfo(f, 0, 0);
    15. stk.push(finfo);
    16. while (!stk.empty()) {//如果不空
    17. finfo = stk.peek();
    18. f = finfo.getFp();
    19. cnt=f.getName().length();
    20. foundDir = false;
    21. for (int i = finfo.getIndex(); !foundDir && i < f.listFiles().length; i++) {
    22. for (int j = 0; j < finfo.getLevel()*10; j++) {
    23. System.out.print(" ");
    24. }
    25. System.out.print(f.listFiles()[i].getName());
    26. if (f.listFiles()[i].isDirectory()) {
    27. System.out.print(" *");
    28. finfo.setIndex(i + 1);
    29. stk.push(new FileInfo(f.listFiles()[i], 0, finfo.getLevel() + 1));
    30. foundDir = true;
    31. }
    32. System.out.println();
    33. }
    34. if (!foundDir)
    35. stk.pop();
    36. }
    37. }
    38. public static void main(String[] args) {
    39. treeView("d:\\Program");
    40. }
    41. }

    .gitignore
    .idea *
              .gitignore
              libraries *
                        lib.xml
                        MigLayout.xml
              misc.xml
              modules.xml
              workspace.xml
    data.txt
    hero.lrc
    lib *
              miglayout-core-javadoc.jar
              miglayout-core-sources.jar
              miglayout-core.jar
              miglayout-swing-javadoc.jar
              miglayout-swing-sources.jar
              miglayout-swing.jar
              mysql-connector-j-8.0.33.jar
    out *
              production *
                        project001 *
                                  cn *
                                            com *
                                                      C1.class
                                                      C2.class
                                                      C3.class
                                                      C4.class
                                                      C5.class
                                                      C6.class
                                                      C7.class
                                                      C8.class
                                                      C9.class
                                                      jform *
                                                                myJForm.class
                                                                myJForm.jfd
                                                      MyClass.class
                                                      p71 *
                                                                Circle.class
                                                                Cylinder.class
                                                                Test.class
                                                      Yun2_4_shixun2.class
                                  com *
                                            abc *
                                                      project1 *
                                                                A.class
                                                      project2 *
                                                                B.class
                                  course *
                                            service *
                                                      FactorialSum.class
                                  eexam6 *
                                            Book.class
                                            Test_Book.class
                                  fileinfo *
                                            FileInfo.class
                                            Test.class
                                  Main.class
                                  test *
                                            JDBC.class
                                  week3 *
                                            day3 *
                                                      Employee.class
                                                      Manager.class
                                                      Test_Employee.class
                                            day4 *
                                                      A.class
                                                      B.class
                                                      Test.class
                                            exam1 *
                                                      Employee.class
                                                      Test.class
                                            exam2 *
                                                      Employee.class
                                                      Test.class
                                            exam3 *
                                                      Employee.class
                                                      Test.class
                                            exam4 *
                                                      Employee.class
                                                      Singleton.class
                                                      Test.class
                                            exam5 *
                                                      Book.class
                                                      Employee.class
                                                      Singleton.class
                                                      Test.class
                                                      TestSingleton.class
                                                      Test_Book.class
                                            exam6 *
                                                      Info.class
                                                      Lyric.class
                                                      Yun2_4.class
                                  xxx *
                                            project1 *
                                                      A.class
                                            project2 *
                                                      B.class
    project001.iml
    src *
              cn *
                        com *
                                  C1.java
                                  C2.java
                                  C3.java
                                  C4.java
                                  C5.java
                                  C6.java
                                  C7.java
                                  C8.java
                                  C9.java
                                  jform *
                                            myJForm.java
                                            myJForm.jfd
                                  MyClass.java
                                  p71 *
                                            Circle.java
                                            Cylinder.java
                                            Test.java
                                  Yun2_4_shixun2.java
              com *
                        abc *
                                  project1 *
                                            A.java
                                  project2 *
                                            B.java
              course *
                        entity *
                        service *
                                  FactorialSum.java
                        util *
              eexam6 *
                        Test_Book.java
              fileinfo *
                        FileInfo.java
                        Test.java
              Main.java
              test *
                        JDBC.java
              week3 *
                        day3 *
                                  Employee.java
                                  Manager.java
                                  Test_Employee.java
                        day4 *
                                  Test.java
                        exam1 *
                                  Employee.java
                                  Test.java
                        exam2 *
                                  Employee.java
                                  Test.java
                        exam3 *
                                  Employee.java
                                  Test.java
                        exam4 *
                                  Employee.java
                                  Singleton.java
                                  Test.java
                        exam5 *
                                  Book.java
                                  Employee.java
                                  Singleton.java
                                  Test.java
                                  TestSingleton.java
                                  Test_Book.java
                        exam6 *
                                  Info.java
                                  Lyric.java
                                  Yun2_4.java
              xxx *
                        project1 *
                                  A.java
                        project2 *
                                  B.java
    三个源码 及  真心英雄 歌词与音频 *
              hero.lrc
              Info.java
              Lyric.java
              Yun2_4.java
              真心英雄.wav
    三个源码 及  真心英雄 歌词与音频.zip
    真心英雄.wav

    小改动的代码:

    1. package fileinfo;
    2. import java.io.File;
    3. import java.util.Stack;
    4. public class Test {
    5. private static void treeView(String path) {
    6. int cnt;
    7. File f = new File(path);
    8. if (f.isFile()) {
    9. System.out.println(f.getName());
    10. return;
    11. }
    12. Stack stk = new Stack();
    13. boolean foundDir;
    14. FileInfo finfo = new FileInfo(f, 0, 0);
    15. int level;
    16. int index;
    17. stk.push(finfo);
    18. while (!stk.empty()) {//如果不空
    19. finfo = stk.peek();
    20. f = finfo.getFp();
    21. level=finfo.getLevel();//第几层
    22. index=finfo.getIndex();//某层第index个文件
    23. foundDir = false;
    24. for (int i = index; i < f.listFiles().length; i++) {
    25. for (int j = 0; j < level*10; j++) {
    26. System.out.print(" ");
    27. }
    28. System.out.print(i+ " " +f.listFiles()[i].getName());
    29. if (f.listFiles()[i].isDirectory()) {
    30. System.out.println(" **DIR**");
    31. finfo.setIndex(i + 1);// 标记下一个没有处理的文件
    32. FileInfo sub = new FileInfo(f.listFiles()[i], 0, level + 1);
    33. stk.push(sub);
    34. foundDir = true;
    35. break;
    36. }
    37. System.out.println();
    38. }
    39. if (!foundDir)
    40. stk.pop();
    41. }
    42. }
    43. public static void main(String[] args) {
    44. treeView("d:\\Program\\teach\\project001\\");
    45. }
    46. }

  • 相关阅读:
    在做程序员的道路上,你掌握了什么概念或技术使你感觉自我提升突飞猛进?
    一篇万字博文带你入坑爬虫这条不归路 【万字图文】
    【.net/.net core】发送邮件方法
    SpringMVC04-SpringMVC获取请求参数
    如何使用 Tibco Business Works 6 (BW6) 或容器版 (BWCE) 创建 Restful Web 服务
    基于SSM的电影小说网站设计与实现
    【CSS】笔记7-HTML5新特征\CSS3
    【Leetcode】剑指Offer 16:数值的整数次方
    Android 修改系统息屏时间.
    React@16.x(15)PureComponent 和 memo
  • 原文地址:https://blog.csdn.net/laocooon/article/details/132783365