java-API之File文件流


創建File對象

File(String pathname)  //通過將給定路徑名字符串轉換為抽象路徑名來創建一個新 File 實例。

常用方法及其測試

                File file = new File("F:\\ioTest\\1.txt");  // 本地磁盤路徑
		
		// 常見方法
		System.out.println( file.length() );  // 獲取文件的字節量
		System.out.println( file.exists() );  // 判斷文件是否存在
		System.out.println( file.isFile() );  // 判斷資源是否存在
		System.out.println( file.isDirectory() );  // 判斷資源是否是文件夾
		System.out.println( file.getName() );  // 獲取文件名
		System.out.println( file.getParent() ); // 獲取父目錄
		System.out.println( file.getAbsolutePath() );  // 獲取 當前文件的絕對路徑(全路徑)
		
		System.out.println();
		
		file = new File("F:\\ioTest\\2.txt");
                // 沒有了創建返回true,有了不創建返回false
		System.out.println( file.createNewFile() ); // 判斷有沒有新建成功
		file = new File("F:\\ioTest\\x\\y\\z");
		System.out.println( file.mkdirs() );  // 創建不存在的多級目錄
		
		file = new File("F:\\ioTest\\xy");
		System.out.println( file.mkdir() ); // 創建一級不存在的目錄
		System.out.println( file.delete() ); // 刪除文件 或者 空白的文件夾
//		
		file = new File("F:\\ioTest\\a");
		String[] str2 = file.list() ;  // 列出文件夾下面所有的資源
//		[1.png, 1.txt, 2.txt],數組里放的是文件名稱
		System.out.println(Arrays.toString(str2));
		
//		File[] listFiles() 
//              返回一個抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中的文件。
		File[] files = file.listFiles();
		System.out.println(Arrays.toString(files));
//		System.out.println( file.listFiles() );
		

常用方法應用

遞歸求目錄總大小

所謂遞歸,就是自己調用自己的一種方式。

    import java.io.File;
    import java.util.Scanner;

    // 該類 測試 遞歸求目錄總大小
    public class Test3_Size {

	public static void main(String[] args) {
		// 1.接收用戶輸入的目錄
		String path = new Scanner(System.in).nextLine();
		File dir = new File(path);
		
//		2.調用size()總大小
		long sum = size(dir);
		System.out.println("文件總大小:"+sum); // 370257 單位:字節
	}
	private static long size(File dir) {
		long sum = 0;
		// 1.列出所有文件夾下面的所有資源
		File[] fs = dir.listFiles();
		
//		1.1 我們需要獲取每個File對象,就需要遍歷fs數組
		for (int i = 0; i < fs.length; i++) {
//			2.如果是文件,把文件的字節量累加 length()
			File file = fs[i];
			if(file.isFile()) {
				sum += file.length();
			}else if(file.isDirectory())  { //3.如果是文件夾,則繼續遍歷文件夾里的文件,進行判斷,即繼續遞歸
				sum += size(file);
			}
		}
//		返回文件總大小
		return sum;
	}
}

經過上述的是,我的指定路徑的字節總數是:370257B,可以通過該文件夾右鍵 -> 屬性,查看到的字節數和程序運行結果一致。

遞歸刪除文件夾

代碼演示:


import java.io.File;
import java.util.Scanner;
public class Test4_Delete {
	public static void main(String[] args) {
		// 接收用戶輸入的路徑
		String path = new Scanner(System.in).nextLine();
		// 創建File對象
		File dir = new File(path);
		
		delete(dir);
		System.out.println("刪除成功!!!");
	}
        /*
	 * dir可以是文件路徑,也可以是文件夾路徑
	 */
	 private static void delete2(File dir) {
		// TODO Auto-generated method stub
		if(!dir.exists()) { //如果路徑不存在,直接返回
			return;
		}
//		1.判斷是否是文件,是的話直接刪除
		if(dir.isFile()) {
			dir.delete(); // 刪除文件
		} else if(dir.isDirectory()) {  // 2.判斷是否是目錄
			for(File f : dir.listFiles()) { // 2.1 遍歷目錄下的所有的資源(文件和文件夾)
				delete(f); // 進入目錄,重新檢查,遞歸調用
			}
			delete(dir); // 刪除外層文件夾
		}
	}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM