1. 程式人生 > >通過java遞迴思想實現以樹形方式展現出該目錄中的所有子目錄和檔案

通過java遞迴思想實現以樹形方式展現出該目錄中的所有子目錄和檔案

當初在開始接觸Java時  學習File部分的一個小練習  挺有意思

一開始是通過看 北京聖思園 張龍老師的視訊開始學校java的,必須強烈推薦,真很棒。

功能實現:主要實現以樹形方式展現出該目錄中的所有子目錄和檔案。 另外, 在展現的時候將目錄排在上面,檔案排在下面。每一層要加上縮排。 檔案是jre6資料夾,我想這資料夾就不用我說什麼了。換上自己的檔案路徑就可以了。

  1. import java.io.File;  
  2. public class FileTest2  
  3. {  
  4. public static int count = 0;  
  5. public static void parse(File[] files)  
  6. {  
  7.     if(files.length == 0)  
  8.     {  
  9.         FileTest2.count--;  
  10.         System.out.println();  
  11.         return;  
  12.     }  
  13.     else  
  14.     {  
  15.         for(File f : files)  
  16.         {  
  17.             if(f.isDirectory())  
  18.             {  
  19.                 FileTest2.count++;  
  20.                 for(int i = 1; i <= FileTest2.count; i++)  
  21.                 {  
  22.                     System.out.print("\t");  
  23.                 }  
  24.                 System.out.println(f.getName());  
  25.                 File[] files2 = f.listFiles();  
  26.                 FileTest2.parse(files2);  
  27.             }  
  28.         }  
  29.         for(File f : files)  
  30.         {  
  31.             if(!f.isDirectory())  
  32.             {  
  33.                 for(int i = 0; i <= FileTest2.count; i++)  
  34.                 {  
  35.                     System.out.print("\t");  
  36.                 }  
  37.                 System.out.println(f.getName());  
  38.             }  
  39.         }  
  40.         FileTest2.count--;  
  41.     }  
  42. }  
  43. public static void main(String[] args)  
  44. {  
  45.     File file = new File("C:\\Program Files\\Java\\jre6");  
  46.     File[] files = file.listFiles();  
  47.     FileTest2.parse(files);  
  48. }  
  49. }  
  50. **************************第二種****************************************
  51.  1 /*
     2     使用遞迴找出某目錄("C:\\JavaProducts")下的所有子目錄以及子檔案
     3 */
     4 
     5 import java.util.*;
     6 import java.io.*;
     7 
     8 public class FileRecursionPrintDemo{
     9     public static void main(String[] args){
    10         List<String> paths = new ArrayList<String>();
    11         paths = getAllFilePaths(new File("C:\\JavaProducts"),paths);
    12         for(String path:paths){
    13             System.out.println(path);    
    14         }
    15     }
    16     
    17     private static List<String> getAllFilePaths(File filePath,List<String> filePaths){
    18         File[] files = filePath.listFiles();
    19         if(files == null){
    20             return filePaths;    
    21         }    
    22         for(File f:files){
    23             if(f.isDirectory()){
    24                 filePaths.add(f.getPath());
    25                 getAllFilePaths(f,filePaths);
    26             }else{
    27                 filePaths.add(f.getPath());
    28             }    
    29         }
    30         return filePaths;
    31     }
    32 }

相關推薦

通過java思想實現樹形方式展現目錄所有子目錄檔案

當初在開始接觸Java時  學習File部分的一個小練習  挺有意思 一開始是通過看 北京聖思園 張龍老師的視訊開始學校java的,必須強烈推薦,真很棒。 功能實現:主要實現以樹形方式展現出該目錄中的所有子目錄和檔案。 另外, 在展現的時候將目錄排在上面,檔案排在下面。每一層要加上縮排。 檔案是jre6資料

Java實現Fibonacci數列,尾實現Fibonacci數列,並獲取計算所需時間

遞迴法計算Fibonacci數列: 它可以遞迴地定義為: 第n個Fibonacci數列可遞迴地計算如下: int fibonacci(int n)    {        if (n <= 1) return 1;        return fibon

sql with as 實現樹形結構)

WITH AS短語,也叫做子查詢部分(subquery factoring),定義一個sql 片段,改sql 片段會被整個sql語句用到。其中最實用的功能就是資料的遞迴,遞迴的原理:遞迴包括至少兩個查詢,一個查詢作為遞迴的基點也就是起點,另一個查詢作為遞迴的成員。   一、定義一個

Java思想倒置陣列

public class ReverseArry { public static void main(String[] args){ int[] arr = {1,2,3,4,5,6,7,8,9}; //System.out.println(arr.l

java實現求全排列

有1~n的n個整數,現要求打印出這n個數的所有可能的排列。比如 1 、2、3的全排列:         1, 2, 3         1, 3, 2         2, 1, 3         2, 3, 1         3, 1, 2          3, 2

Java思想分析

先舉個例子:定義一個 sumByMax(int max)方法,求 1+…+max 的和 這個例子簡單的來講就是將1到max的所有整數都加起來,如果先不考慮用遞迴,那麼這就是一個個重複的累加步驟可以用迴圈來解決: public int sumByMax(int

Java應用:輸出樹形選單

樹節點類:package cn.com.tree; public class Node { private Integer id; private Integer parentId; priv

java 動態實現左側導航欄

        之前專案中是使用的最多兩級選單,所以當時寫的是兩個for 迴圈,一旦多層選單,維護起來就麻煩,所以今天使用遞迴實現導航欄動態生成。在這裡主要java 後臺程式碼,以及簡單js 遞迴後臺json 資料。資料庫就沒有在這裡設計。1、Menu實體類package c

[Linux C]遍歷指定目錄下的子目錄檔案

/* 功能:演示了在Linux下利用C語言遞迴遍歷指定目錄下的子目錄(不含隱藏目錄)和檔案 */ #include <stdio.h> #include <dirent.h> #include <string.h> void List

Java——打印指定目錄所有檔案 ,包括子資料夾所有檔案

import java.io.File; // 打印出指定目錄中所有的檔案 ,包括子資料夾中的所有檔案 //遍歷檔案下所有的檔案 public class FileDemo { public static void main(String[] args) { File f

Java實現圍棋提子思想

在製作圍棋遊戲的時候 一般來說會有兩個問題 圍棋提子的演算法思想 Ai走子的演算法思想 由於ai走子的演算法思想確實太過於難了,牽扯到深度學習的東西 這裡就不進行闡述了 畢竟我也根本不會 我將闡述的是圍棋提子的思想 我是使用遞迴的思想來解決的

JAVA——實現n的階乘

n的階乘的演算法:n*(n-1)*(n-2)… *1 例如5的階乘為:5 * 4 *3 * 2 * 1 程式碼如下: //遞迴實現n的階乘 import java.util.Scanner; public class Factorial1{ //實現階乘的方法——使用遞迴 //要接收一

Java:利用方法實現角谷定理

問題描述:        角谷定理。輸入一個自然數,若為偶數,則把它除以2,若為奇數,則把它乘以3加1。經過如此有限次運算後,總可以得到自然數值1。求經過多少次可得到自然數1。 如:輸入22, 輸出 22 11 34 17 52 26 1

平衡二叉樹的java實現

平衡二叉樹的操作難點在於如何調整平衡,根據情況可以分為LL、RR、LR、RL旋轉四種方法,這是java的遞迴版本,後面打算用非遞迴實現一下,此部落格是根據部落格:http://blog.csdn.net/javazejian整理而成,原部落格圖文並茂,應該是花了不少心思研究,講得也非常詳細,特此整理

java 實現迴圈比賽日程

在java實現迴圈比賽日程的程式中,主要運用的思想就是分治法。        分治法:通俗的理解就是在實際需要解決的問題當中,將大的問題分成小的問題,逐次分割,直到達到容易解決的範圍。然後再將分割的小域的解按一定規律組合在一起成為“母”

Java拼接json樹形結構

最近在專案開發過程中遇到一個問題,前臺需要用到echarts元件中的旭日圖來顯示層級關係,這就需要我將後臺Sql查詢出來的json陣列拼接成多級巢狀的樹形結構返回前臺 ,類似於 而我從資料庫中查出來的資料時這樣的: {"prog_level_id_1":"5","

java實現商品分類例子

在對商品進行分類時,類別表會出現父節點 遞迴查詢本節點的id及孩子節點的id /** * 遞迴查詢本節點的id及孩子節點的id * @param categoryId* @return*/public ServerResponse<List<Integer

Java利用演算法實現24點遊戲

24點遊戲 經典的紙牌益智遊戲,常見遊戲規則:         從撲克中每次取出4張牌。使用加減乘除,第一個能得出24者為贏。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求程式設計解決24點遊戲。         基本要求: 隨機生成4個代表撲克牌牌面

java 查詢樹形選單結構(個人認為是最簡單的)

/** * 獲取無限級的類別資源 */ @Override public List<Object> findTypeTree() throws BusinessException

Java排序演算法(三)--歸併排序(MergeSort)與非實現

歸併有遞迴和非遞迴兩種。 歸併的思想是: 1.將原陣列首先進行兩個元素為一組的排序,然後合併為四個一組,八個一組,直至合併整個陣列; 2.合併兩個子陣列的時候,需要藉助一個臨時陣列,用來存放當前的