- 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));
//寫入內容到文件 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類還提供遍歷文件和目錄、監控文件變化、讀取和設置文件權限、查看文件屬性的方法,功能十分強大。