最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java的后臺文件夾下文件的遍歷完整代碼

 更新時(shí)間:2017年12月22日 16:30:27   作者:人圭先生  
這篇文章主要介紹了Java的后臺文件夾下文件的遍歷完整代碼,首先分享了java中遍歷一個文件夾里邊的所有文件,然后介紹了用Java遍歷一個文件夾并獲取它里面的所有內(nèi)容詳細(xì)代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下。

一、在java中遍歷一個文件夾里邊的所有文件,可以有兩種方式:

1.遞歸遍歷,通常也是開發(fā)者第一時(shí)間能想到的方法,遞歸遍歷的優(yōu)點(diǎn)是:實(shí)現(xiàn)起來相對簡單,代碼量相對較少,執(zhí)行效率較高,缺點(diǎn)是:比較吃內(nèi)存,對硬件要求較高

// 遞歸遍歷
 private void getDirectory(File file) {
 File flist[] = file.listFiles();
 if (flist == null || flist.length == 0) {
   return 0;
 }
 for (File f : flist) {
   if (f.isDirectory()) {
     //這里將列出所有的文件夾
     System.out.println("Dir==>" + f.getAbsolutePath()); 
     getDirectory(f);
   } else {
     //這里將列出所有的文件
     System.out.println("file==>" + f.getAbsolutePath());
   }
 }
}

2.非遞歸遍歷,遞歸遍歷的話是很容易理解的,但是非遞歸遍歷的話估計(jì)思路不太容易上來,我當(dāng)時(shí)也苦思良久,發(fā)現(xiàn)java有個一個LinkedList這玩意,字面上也大概知道,這個是用來保存一個鏈接文件的列表,有這個的話就好辦了,具體思路是這樣:遍歷一個文件夾的時(shí)候,如果是文件夾,就添加到linkedlist里去,如果是文件則列出;這樣該目錄的文件和文件夾就遍歷完畢了,文件夾全部被保存到linkedlist里;所以剩下的就是遍歷linkedlist里邊的文件夾的文件,遍歷方式同上邊的操作一致,如果是文件夾就添加到linkedlist里邊(Ps:遍歷過程中的linkedlist始終是同一個list),當(dāng)然每次從列表取出一個文件夾之后需要從列表中刪除該文件夾,這里采用linkedlist.removeFirst()來讀取,這樣是每次讀取列表的第一個元素并將其從列表剔除。這樣只要遍歷到linkedlist的狀態(tài)是isEmty的時(shí)候就說明遍歷完畢了。

// 非遞歸遍歷
private void GetDirectorySize(File file) {
	LinkedList list = new LinkedList();
	//保存待遍歷文件夾的列表
	GetOneDir(file, list);
	//調(diào)用遍歷文件夾根目錄文件的方法
	File tmp;
	while (!list.isEmpty()) {
		tmp = (File) list.removeFirst();
		//這個地方的判斷有點(diǎn)多余,但是為了保險(xiǎn)還是給個判斷了,正常情況列表中是只有文件夾的
		//但是不排除特殊情況,例如:本身是文件夾的目標(biāo)在壓入堆棧之后變成了文件
		if (tmp.isDirectory()) {
			GetOneDirSize(tmp, list);
		} else {
			System.out.println("file==>" + tmp.getAbsolutePath());
		}
	}
}
// 遍歷指定文件夾根目錄下的文件
private void GetOneDir(File file , LinkedList list){
	//每個文件夾遍歷都會調(diào)用該方法
	System.out.println("Dir==>" + f.getAbsolutePath());
	File[] files = file.listFiles();
	sumdir += 1;
	if (files == null || files.length == 0) {
		return ;
	}
	for (File f : files) {
		if (f.isDirectory()) {
			list.add(f);
		} else {
			//這里列出當(dāng)前文件夾根目錄下的所有文件
			System.out.println("file==>" + f.getAbsolutePath());
		}
	}
}

二、用Java遍歷一個文件夾并獲取它里面的所有內(nèi)容

package demo0823;
import java.io.File;
import java.util.ArrayList;
public class FileTest {
	private static ArrayList<String> fileList = new ArrayList<String>();
	public static void main(String[] args) {
		String filepath = "G:\\Test\\icon";
		getFiles(filepath);
	}
	static void getFiles(String filepath){
		File root = new File(filepath);
		File[] files = root.listFiles();
		for (File file : files){
			if(file.isDirectory()){
				//如果file是一個目錄,循環(huán)遞歸調(diào)用地柜
				//遞歸調(diào)用
				getFiles(file.getAbsolutePath());
				fileList.add(file.getAbsolutePath());
				System.out.println("顯示"+filepath+"下所有子目錄及其文件"+file.getAbsolutePath());
			} else{
				//不是目錄的話遍歷其地下的文件
				System.out.println("顯示"+filepath+"下所有子文件"+file.getAbsolutePath());
			}
		}
	}
}

效果圖:

總結(jié)

以上就是本文關(guān)于Java的后臺文件夾下文件的遍歷完整代碼的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關(guān)文章

  • 詳解自動注冊Gateway網(wǎng)關(guān)路由配置

    詳解自動注冊Gateway網(wǎng)關(guān)路由配置

    這篇文章主要為大家介紹了自動注冊Gateway網(wǎng)關(guān)路由配置的方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 查看Spring容器中bean的五種方法小結(jié)

    查看Spring容器中bean的五種方法小結(jié)

    近期在寫Spring項(xiàng)目的時(shí)候,需要通過注解的形式去替代之前直接將Bean存放在Spring容器這種方式,以此來簡化對于Bean對象的操作,這篇文章主要給大家介紹了關(guān)于如何查看Spring容器中bean的五種方法,需要的朋友可以參考下
    2024-05-05
  • SpringBoot+Vue跨域配置(CORS)問題得解決過程

    SpringBoot+Vue跨域配置(CORS)問題得解決過程

    在使用 Spring Boot 和 Vue 開發(fā)前后端分離的項(xiàng)目時(shí),跨域資源共享(CORS)問題是一個常見的挑戰(zhàn),接下來,我將分享我是如何一步步解決這個問題的,包括中間的一些試錯過程,希望能夠幫助到正在經(jīng)歷類似問題的你
    2024-08-08
  • volatile可見性的一些認(rèn)識和論證

    volatile可見性的一些認(rèn)識和論證

    volatile的關(guān)鍵詞的使用在JVM內(nèi)存模型中已是老生常談了,這篇文章主要結(jié)合自己對可見性的一些認(rèn)識和一些直觀的例子來談?wù)剉olatile,感興趣的朋友一起看看吧
    2017-08-08
  • SpringCloud微服務(wù)的調(diào)用與遠(yuǎn)程調(diào)用測試示例

    SpringCloud微服務(wù)的調(diào)用與遠(yuǎn)程調(diào)用測試示例

    這篇文章主要介紹了SpringCloud微服務(wù)的調(diào)用與遠(yuǎn)程調(diào)用測試示例,服務(wù)調(diào)用者-可以暫時(shí)認(rèn)為是與用戶交互的角色(因?yàn)榇嬖谖⒎?wù)之間的調(diào)用),可以根據(jù)該用戶的類型將其賦予不同的服務(wù)調(diào)用權(quán)限,通過一次http請求訪問調(diào)用對應(yīng)的微服務(wù)獲取想要的數(shù)據(jù)
    2023-04-04
  • 聊聊java多線程創(chuàng)建方式及線程安全問題

    聊聊java多線程創(chuàng)建方式及線程安全問題

    線程被稱為輕量級進(jìn)程,是程序執(zhí)行的最小單位,它是指在程序執(zhí)行過程中,能夠執(zhí)行代碼的一個執(zhí)行單位。接下來通過本文給大家介紹java多線程創(chuàng)建方式及線程安全問題,感興趣的朋友一起看看吧
    2022-01-01
  • MyBatis常用標(biāo)簽大全

    MyBatis常用標(biāo)簽大全

    這篇文章主要介紹了MyBatis常用標(biāo)簽大全的相關(guān)資料,非常不錯,具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-12-12
  • 消息中間件ActiveMQ的簡單入門介紹與使用

    消息中間件ActiveMQ的簡單入門介紹與使用

    消息隊(duì)列是指利用高效可靠的消息傳遞機(jī)制進(jìn)行與平臺無關(guān)的數(shù)據(jù)交流,并基于數(shù)據(jù)通信來進(jìn)行分布式系統(tǒng)的集成,這篇文章主要給大家介紹了關(guān)于ActiveMQ的簡單入門介與使用的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • SpringBoot接收參數(shù)使用的注解實(shí)例講解

    SpringBoot接收參數(shù)使用的注解實(shí)例講解

    這篇文章主要介紹了詳解SpringBoot接收參數(shù)使用的幾種常用注解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • SpringBoot新手入門的快速教程

    SpringBoot新手入門的快速教程

    這篇文章主要給大家介紹了關(guān)于SpringBoot新手入門的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用SpringBoot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12

最新評論

乐亭县| 玉龙| 鹿泉市| 正定县| 金沙县| 康平县| 永嘉县| 云浮市| 五大连池市| 丰镇市| 济源市| 固原市| 华安县| 即墨市| 平顺县| 克什克腾旗| 淮南市| 嘉祥县| 华坪县| 修文县| 丘北县| 托里县| 聂荣县| 宜州市| 柘城县| 云阳县| 青铜峡市| 册亨县| 长沙县| 山东省| 夏津县| 滁州市| 内丘县| 祁阳县| 大埔区| 邵武市| 沧源| 哈密市| 缙云县| 松江区| 启东市|