Java中的File類——學習小結

1.什麼是File類

Java是面對對象的語言,計算機中的內容不是文件即是文件夾。
獲取File類有三種方式【構造方法】:

  • File(String pathNmae);
    根據對應的文件路徑創建獲取對應的File類對象,可以是文件,可以是文件夾。
  • File(String parent, String child);
    根據對應的父目錄文件夾路徑,以及子文件名或者子文件夾名,創建對應的File類對象
  • File(File parent, String child);
    根據對應的父目錄文件夾File類對象,以及子文件名或者子文件夾名,創建對應File類對象

代碼格式:

/*
 * 創建File類對象過程
 */
public class Demo1 {
	public static void main(String[] args) throws IOException {
		//創建文件的三種方式
		//操作文件必須帶有文件的後綴名。如1.txt
		File file = new File("F:\\test\\2.txt");
		//separator 根據系統自動補齊分隔符
//		File file1 = new File("F:" + File.separator + "test");
//		File file2 = new File("F:\\test","1.txt");
//		File file3 = new File(file, "aaa");
		System.out.println(file.createNewFile());
		System.out.println(file.createNewFile());
		
	}
}

文件的路徑屬性分爲:

1.相對路徑
2.絕對路徑。

路徑分隔符:

windows是 / 或 \\
Linux UNIX macOS 分隔符是/
File.separatorChar() 該方法會根據當前系統來自動補齊不同的分隔符

2.創建文件和文件夾

創建文件方法:

boolean createNewFile();
該方法通過File類對象調用,創建對應File類對象中保存的路徑的普通文件。
若返回false,可能的原因有:

1.路徑不合法
2.對應的文件夾沒有寫入權限
3.對應的文件已經存在

代碼格式:

//創建File類對象file
		File file = new File("F:/test");
		
		//創建File類對象file2,並創建保存的子文件
		File file2 = new File(file, "file2.txt");
		System.out.println(file2.createNewFile());
創建文件夾方法:

(1)boolean mkdir();
該方法也是通過File類對象調用,創建對應File類對象中保存路徑的文件夾。
若返回false,可能的原因有:

1.路徑不合法
2.對應的文件夾沒有寫入權限
3.對應的文件夾已經存在

(2)boolean mkdirs();
通過File類對象創建其中保存的文件目錄的所有對應文件夾,包括中間路徑
(3)boolean renameTo(File dest);
通過File類對象調用,轉爲目標File類對象dest
該方法可重命名文件/文件夾和移動。
代碼:

//創建File類對象file3,並創建保存的文件夾
		File file3 = new File(file, "bbb");
		System.out.println(file3.mkdir());
		
		//創建File類對象file4,並創建保存的文件夾目錄
		File file4 = new File("F:/test/a/s/d/f/1");
		System.out.println(file4.mkdirs());

3.刪除文件或文件夾

(1)boolean delete();
通過File類對象調用,刪除對應的文件或者文件夾

【注意】
1.刪除的文件或者文件夾都是直接抹掉數據,不是放入回收站
2.無法刪除非空文件夾,文件夾中存在其他內容無法整體刪除。

(2)void deleteOnExit();
程序退出時刪除對應的文件或者文件夾
代碼:

/*
 * 刪除文件或文件夾
 */
public class Demo3 {
	public static void main(String[] args) throws IOException {
		
		File file = new File("F:/test/刪除該文件");
		file.createNewFile();
		//刪除文件
		System.out.println(file.delete());
		
		
		File file2 = new File("F:/test/刪除文件夾");
		file2.mkdir();
		//刪除文件夾
		System.out.println(file2.delete());
		
		//deleteOnExit
		File file3 = new File("F:/test/2.txt");
		file3.deleteOnExit();
	}
}

4.文件屬性判斷

  • boolean isFile();
    判斷是否是一個普通文件
  • boolean isDirctory();
    判斷是否是一個文件夾
  • boolean isAbsolute();
    判斷是否使用了絕對路徑
  • boolean isHidden();
    判斷是否是隱藏文件
  • boolean exists();
    判斷文件是否存在

代碼:

//判斷是否爲文件後者文件夾
   	System.out.println(new File("F:/test/bbb").isFile());
   	System.out.println(new File("F:/test/bbb").isDirectory());
   	
   	//判斷不存在的文件和文件夾
   	//若不存在,都爲false
   	System.out.println(new File("F:/test/qqq.zip").isFile());
   	System.out.println(new File("F:/test/qqq").isDirectory());

5.獲取文件屬性

沒什麼大用。因爲不管文件是否存在,都能得到相應屬性。因爲返回的是創建對象中保存的地址和文件名。

1.String getPath();
	獲取File類對象保存的路徑
2.String getName();
	獲取當前File類對象中保存的文件名或者文件夾名
3.String getParent();
	獲取當前File類對象對應文件或者文件夾的父目錄路徑
4.String getAbsolutePath();
	獲取當File類對象對應文件或者文件夾的絕對路徑

其中也存在兩個有用的方法:

1.long lastModified()
	獲取文件的最後一次修改時間,返回值是一個時間戳類型。
2.long length();
	獲取文件的大小,佔用硬盤空間字節數。

代碼:

/獲取文件的路徑和姓名
		System.out.println(file.getPath());
		System.out.println(file.getName());
		
		//獲取指定子集合(要頭不要尾)
		String str = "F:/test/bbb/1.zip";
		System.out.println(str.substring(str.lastIndexOf('b') ));
		
		//獲取文件的父目錄
		System.out.println(file.getParent());
		//獲取指定子集和
		System.out.println(str.substring(0, str.lastIndexOf('/')));
		
		//獲取文件的絕對路徑
		System.out.println("--------------------------");
		System.out.println(new File("99999999").getAbsolutePath());

6.列表方法:

  • static File[] listRoots();
    通過File類調用,有且針對於Windows操作系統有效,獲取當前電腦內所有根盤符對象,如果是Linux,UNIX,macOS是無效的。
  • File[] listFiles();
    通過File類對象調用,獲取當前File類對象對應文件夾下的所有子文件或者子文件夾的File類對象數組
  • String[] list();
    通過File類對象調用,獲取當前File類對象對應文件夾下的所有子文件或者子文件夾的String類型文件名或者文件夾名字數組

代碼:

/*
 * 獲取文件的屬性
 */
public class Demo6 {
	public static void main(String[] args) {
		File file = new File("F:/test/bbb/3.txt");
		
		//file.lastModified()最後一次修改時間
		long lastModified = file.lastModified();
		System.out.println(lastModified);
		
		//對於日期展示的處理方式
		//SimpleDateFormat一個日期的規範格式
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
		String format = simpleDateFormat.format(new Date(lastModified));
		System.out.println(format);
		
		//獲取文件的大小(佔用字節數)
		//如果操作的是文件夾,返回0L
		System.out.println(file.length());
		System.out.println(new File("F:/test/bbb").length());
		
	}
}

7. FilenameFilter文件名過濾器

功能:

【用於獲取指定類型的文件】

/*
 * 獲取文件列表、文件名、增強for循環!!!
 */
public class Demo7 {
	public static void main(String[] args) {
		//獲取當前電腦內所有根盤符對象
		File[] listRoots = File.listRoots();
		/*
		 * for(數據類型 變量名:數組/集合 ){
		 * 
		 * 
		 * }
		 */
		for (File file : listRoots) {
			System.out.println(file);
		}
		
		System.out.println("-----------------");
		//獲取目標文件夾下的所有子文件和子文件夾
		File file = new File("E:/java");
		File[] listFiles = file.listFiles();
		for (File file2 : listFiles) {
			System.out.println(file2);
		}
		
		//獲取子文件或子文件夾的名字
		System.out.println("=====================");
		String[] list = file.list();
		for (String string : list) {
			System.out.println(string);
		}
		
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章