1. 程式人生 > >22-IO流-33-IO流(File物件-常見功能-建立和刪除)

22-IO流-33-IO流(File物件-常見功能-建立和刪除)

package demo;

import java.io.File;
import java.io.IOException;

public class FileMethodDemo2 {

	public static void main(String[] args) throws IOException {
		
		/*
		 * File物件的常見方法:
		 * 
		 * 2.建立與刪除
		 * (1)建立
		 * ①操作檔案
		 * boolean creatNewFile():當且僅當不存在指定名稱的檔案時,建立一個新的空檔案。
		 * static file createTempFile(String prefix, String suffix):建立新檔案,可以指定字首和字尾。
		 * ②操作資料夾
		 * boolean mkdir():當且僅當不存在指定名稱的資料夾時,建立一個新的空資料夾。(僅建立一個資料夾,且沒有子資料夾)
		 * boolean mkdirs():建立多級目錄,即資料夾內還有資料夾,可以有若干資料夾相互巢狀。
		 * 
		 * (2)刪除
		 * boolean delete():刪除檔案或資料夾(注意檔案和資料夾都可用delete刪除)
		 * void deleteOnExit():在虛擬機器終止時刪除檔案
		 * (如丟擲異常後虛擬機器終止,那麼無法執行delete關閉,所以需要用deleteOnExit()方法,如下:
		 * ①建立檔案→丟擲異常→delete,這個拋異常會關閉JVM,那麼delete也執行不到;
		 * ②建立檔案→deleteOnExit→丟擲異常,這樣可以正常刪除,因為會提前告訴JVM,一旦你停止就幫我刪除檔案,那麼
		 * 拋異常後,JVM關閉,自動刪除檔案。
		 * )
		 */
//		creatAndDeleteDemo1();
		creatAndDeleteDemo2();

	}

	public static void creatAndDeleteDemo1() throws IOException {
		
		File file = new File("file.txt");
		
/*
 * 和IO流不一樣,如果當前目錄存在需要建立的檔案(file.txt),那麼createNewFile()方法不會建立檔案,返回值(b)為false,
 * 如果當前目錄不存在File.txt,那麼新建一個,b值為真。(IO流管你存不存在,直接覆蓋)。
 */
		//建立
		boolean b = file.createNewFile();//既然建立新檔案,那麼必須訪問當前計算機的硬碟,所以需要丟擲IO異常。
		System.out.println(b);
		
		//刪除
		boolean b1 = file.delete();
		System.out.println(b1);
	}
	
	public static void creatAndDeleteDemo2() {
		
		File file = new File("abc");
		File dir = new File("aaa\\a\\b\\c");
		
		//建立資料夾
		boolean b = file.mkdir();//建立單個資料夾abc
		System.out.println(b);
		
		boolean b1 = dir.mkdirs();//建立多級目錄,aaa中有a,a中有b,b中有c
		System.out.println(b1);
		
		//刪除資料夾
		boolean b2 = file.delete();//刪除單個資料夾abc
		System.out.println(b2);
		
		boolean b3 = dir.delete();//【注意】這裡不是刪除aaa\\a\\b\\c,而是刪除c資料夾,因為aaa\\a\\b是c的父目錄
		System.out.println(b3);
/**
 * 【特別注意】
 * (1)如果在abc資料夾內還有別的檔案,那麼呼叫delete方法不能刪除abc資料夾,因為windows是從裡往外刪除,即如果內部有東西,
 * 那麼裡面的不刪除,不會直接刪除整個資料夾,這樣做是為了防止資料丟失。
 * 
 * (2)在java中,delete方法慎用,因為是直接刪除,不走回收站。
 */
	}

}