File、Paths和Files類的使用詳解


  • Paths:通過get()方法返回一個Path對象,Path用於表示文件路徑和文件。
  • Files:提供了大量處理文件的方法,例如文件復制、讀取、寫入,獲取文件屬性、快捷遍歷文件目錄等.....
  • Files 和 Paths是Java8新增的工具類,在處理文件方面功能非常強大。

 

 

Paths類

        //以當前路徑作為Path對象
        Path p = Paths.get(".");
        //使用傳入的字符串返回一個Path對象
        Path p2 = Paths.get("D","ReviewIO","URL"); //對應的路徑 System.out.println("p對象的對應路徑:" + p.toString()); System.out.println("p2對象的對應路徑:" + p2.toString()); //路徑數量是以路徑名的數量作為標准 System.out.println("p路徑數量:" + p.getNameCount()); System.out.println("p2路徑數量:" + p2.getNameCount()); //獲取絕對路徑 System.out.println("p絕對路徑:" + p.toAbsolutePath()); System.out.println("p2絕對路徑:" + p2.toAbsolutePath()); //獲取父路徑 System.out.println("p父路徑:" + p.getParent()); System.out.println("p2父路徑:" + p2.getParent()); //獲取p2對象的文件名或者文件目錄名  System.out.println(p2.getFileName()); //通過Path對象返回一個分隔符對象 Spliterator<Path> split = p2.spliterator();

Paths類獲取文件或文件目錄路徑可以使用采用多個字符串形式,也可以使用Path.get(D:\\ReviewIO\\URL)這種形式。返回的Path對象完全可以代替File類用於文件IO操作。

Files類

Files完成文件復制的方法,方法很簡單。
		Path source = Paths.get("F:","Java經典練習題.pdf");
		Path dest = Paths.get("F:","files.txt");
		File f = new File("F:\\ok.pdf");
		f.createNewFile();//如果f對象對應路徑不存在就創建一個。	
		System.out.println("source對象的文件路徑:" + source);
		//復制文件
		Files.copy(source, new FileOutputStream(f));
 
Files完成寫入文件的方法
		//寫入內容到文件
		ArrayList<String> as = new ArrayList<>();
		as.add("A");
		as.add("B");
		as.add("C");
		Files.write(dest, as, Charset.forName("GBK"));
  • 實例說明:個人覺得用起來不怎么方便。方法參數很多,尤其是Iterable<? extends CharSequence>參數,Iterable是個頂級接口,實現類幾乎都是集合類,並且限制了類型通配符上限是CharSequence,這意味着要使用泛型為字符類型的集合類作為數據寫入指定文件中,很麻煩。
  • 如果只是簡單寫入內容到文件中,建議使用重定向標准輸出流,然后使用打印流寫入,簡單粗暴。
使用Files類讀取文件內容就不介紹了,個人覺得除了文件復制比較簡潔通用,其他兩個方法個人認為使用IO流或者NIO流比較方便一點。剩下來會介紹一些Files類的方法。
	public static void main(String[] args) throws IOException  {
		Path source = Paths.get("F:","Java經典練習題.pdf");	
		/** 返回值為boolean的操作方法樣例 */
		System.out.println(Files.isHidden(source));//文件是否隱藏
		System.out.println(Files.isExecutable(source));//文件是否可執行
		System.out.println(Files.isWritable(source));//文件是否可寫
		//獲取Paths對象對應的文件路徑的文件儲存
		FileStore f  = Files.getFileStore(Paths.get("F:"));
		FileStore e = Files.getFileStore(Paths.get("E:"));
		System.out.println("F盤的總大小" + f.getTotalSpace());
		System.out.println("F盤的可用大小" + f.getUsableSpace());
		System.out.println("F盤的未分配空間" + f.getUnallocatedSpace());
				
	}

除了以上的方法之外,Files類還提供遍歷文件和目錄、監控文件變化、讀取和設置文件權限、查看文件屬性的方法,功能十分強大。


免責聲明!

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



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