舉例File類操作的所有高級用法——遞歸打印所有目錄、累加目錄所在空間大小、刪除指定目錄

package com.atguigu.exer2;

import java.io.File;
/**
 * 3. 遍歷指定目錄所有文件名稱,包括子文件目錄中的文件。
	拓展1:並計算指定目錄佔用空間的大小
	拓展2:刪除指定文件目錄及其下的所有文件

 *
 */
public class ListFilesTest {

	public static void main(String[] args) {
		// 遞歸:文件目錄
		/** 打印出指定目錄所有文件名稱,包括子文件目錄中的文件 */

		// 1.創建目錄對象
		File dir = new File("E:\\teach\\01_javaSE\\_尚硅谷Java編程語言\\3_軟件");

		// 2.打印目錄的子文件
		printSubFile(dir);
	}

	public static void printSubFile(File dir) {
		// 打印目錄的子文件
		File[] subfiles = dir.listFiles();

		for (File f : subfiles) {
			if (f.isDirectory()) {// 文件目錄
				printSubFile(f);
			} else {// 文件
				System.out.println(f.getAbsolutePath());
			}

		}
	}

	// 方式二:循環實現
	// 列出file目錄的下級內容,僅列出一級的話
	// 使用File類的String[] list()比較簡單
	public void listSubFiles(File file) {
		if (file.isDirectory()) {
			String[] all = file.list();
			for (String s : all) {
				System.out.println(s);
			}
		} else {
			System.out.println(file + "是文件!");
		}
	}

	// 列出file目錄的下級,如果它的下級還是目錄,接着列出下級的下級,依次類推
	// 建議使用File類的File[] listFiles()
	public void listAllSubFiles(File file) {
		if (file.isFile()) {
			System.out.println(file);
		} else {
			File[] all = file.listFiles();
			// 如果all[i]是文件,直接打印
			// 如果all[i]是目錄,接着再獲取它的下一級
			for (File f : all) {
				listAllSubFiles(f);// 遞歸調用:自己調用自己就叫遞歸
			}
		}
	}

	// 拓展1:求指定目錄所在空間的大小
	// 求任意一個目錄的總大小
	public long getDirectorySize(File file) {
		// file是文件,那麼直接返回file.length()
		// file是目錄,把它的下一級的所有大小加起來就是它的總大小
		long size = 0;
		if (file.isFile()) {
			size += file.length();
		} else {
			File[] all = file.listFiles();// 獲取file的下一級
			// 累加all[i]的大小
			for (File f : all) {
				size += getDirectorySize(f);// f的大小;
			}
		}
		return size;
	}

	// 拓展2:刪除指定的目錄
	public void deleteDirectory(File file) {
		// 如果file是文件,直接delete
		// 如果file是目錄,先把它的下一級幹掉,然後刪除自己
		if (file.isDirectory()) {
			File[] all = file.listFiles();
			// 循環刪除的是file的下一級
			for (File f : all) {// f代表file的每一個下級
				deleteDirectory(f);
			}
		}
		// 刪除自己
		file.delete();
	}

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章