Java NIO.2 Files類的經常使用方法

 

Files類是一個工具類,提供了大量的靜態方法來操做文件、文件夾。數組

 

 

Files類經常使用方法:工具

  • long size(Path  path)    //返回文件大小

 

  • boolean  isDirectory(Path  path)    //是不是文件夾
  • boolean  isExecutable(Path  path)    //是不是可執行文件
  • boolean  isHidden(Path  path)    //是不是隱藏的
  • boolean  exists(Path  path)   //該文件/文件夾是否存在
  • boolean  notExists(Path  path)   //是否不存在
  • boolean  isReadable(Path  path)    //是否可讀
  • boolean  isWritable(Path  path)    //是否可寫

 

 

  • createFile(Path  filePath)   //建立文件,只能是文件,不能是文件夾。若是已存在同名文件,會報錯。
  • createDirectory(Path  dirPath)    //建立文件夾。若是已存在同名文件夾,會報錯

 

  • createTempFile(String prefix, String suffix)    //在OS的臨時文件夾中建立一個臨時文件
  • createTempFile(Path  dir, String prefix, String suffix)    //在指定的目錄下建立一個臨時文件

   prefix是文件名前綴,suffix是文件名後綴,通常是擴展名,好比「.zip」。中間會使用系統生成的一個隨機數。返回該臨時文件的Path對象(絕對路徑)。ui

 

  • createTempDirectory(String prefix)    //在OS的臨時文件夾中建立一個臨時文件夾。
  • createTempDirectory(Path  dir, String prefix)    //在指定的目錄下建立一個臨時文件夾

  文件夾名:前綴+一個系統生成的隨機數編碼

 

 

 

  • Files.copy(Path src, Path  target)    //複製文件,若是存在同名的目標文件,會報錯。
  • Files.copy(Path  src, Path  target , StandardCopyOption.REPLACE_EXISTING)   //若是存在同名的目標文件,會替換

  只能是文件,不能是文件夾,要複製文件夾須要遞歸複製子文件、子文件夾。目標文件名可與原文件名不一樣。spa

 

  • Files.move(Path  src, Path  target)    //剪切,若是目標已存在,會報錯
  • Files.move(Path  src, Path  target , StandardCopyOption.REPLACE_EXISTING)    //若是目標已存在,會替換。雖然是move,但常量仍是是StandardCopyOption.REPLACE_EXISTING。

  能夠是文件、文件夾。code

 

  在copy()、move()操做中:若是Path的中間部分路徑有不存在的,會報錯,並不會自動建立。好比複製一張圖片,目標是"D:\\test\\1.png" ,若是test不存在,會報錯。對象

  剪切是一種特殊的複製,先複製,複製完成後再刪除原文件/文件夾。blog

 

 

 

  • Files.delete(Path  path)  //刪除文件、空目錄。若是不存在,會報錯
  • Files.deleteIfExists(Path path)    //存在才刪除,不存在時不會報錯。

  只能刪除文件、空目錄。若是該文件夾下包含子文件、子目錄,即使子目錄是空的,也會報錯。遞歸

  要刪除有內容的文件夾,須要遞歸刪除子文件、子文件夾。圖片

 

 

 

查看某個盤的大小:

1      Path path=Paths.get("D;\\");
2         FileStore store=Files.getFileStore(path);
3         System.out.println(store.getTotalSpace());   //總大小。字節數
4         System.out.println(store.getUsableSpace());  //可用大小

 

 

 

獲取某個文件夾下全部子文件、子文件夾的路徑:

 1     //只能是文件夾
 2         Path path=Paths.get("D:\\二次元");
 3         //列出該文件夾下全部子文件、子文件夾的路徑。
 4         Files.list(path).forEach(pathItem -> System.out.println(pathItem));   //pathItem表明一個子文件/文件夾的Path對象
 5         
 6         /*
 7         D:\二次元\a.png
 8         D:\二次元\c.png
 9         D:\二次元\q.png
10         D:\二次元\test
11          */

 

 

 

讀取文本文件的全部行:

1     //只能是文本文件
2         Path path=Paths.get("D:\\二次元\\1.txt");
3         //讀取全部的行,逐行輸出
4         Files.lines(path).forEach(line->System.out.println(line));  //line表明一行
5         //可指定解碼字符集。只能是Charset對象,不能是String。
6         // Files.lines(path,Charset.forName("GBK")).forEach(line->System.out.println(line)); 

 

 

 

讀取文件內容:

  • String  Files.readString(Path path)    //讀取全部文本,以String形式返回。會讀取換行符。只能是文本文件
  • String  Files.readString(Path path, Charset  charset)    //可指定解碼字符集

 

  • List<String>  Files.readAllLines(Path  path)   //讀取全部的行,以LIst<String>形式返回,一行就是一個String類型的元素。只能是文本文件
  • List<String>  Files.readAllLines(Path  path, Charset  charset)    //可指定解碼字符集

 

  • byte[]  Files.readAllBytes(Path  path)    //讀取文件全部數據,以字節數組形式返回。文件能夠是任意類型。

 

 

 

 

寫入文件:

  • Files.write(Path  path, byte[]  bytes)    //寫入一個byte[]
  • Files.writeString(Path  path, CharSequence  cs)    //寫入一個字符序列,能夠是String、StringBuffer、StringBuilder、Char[]
  • Files.writeString(Path  path, CharSequence  cs, Charset  charset)    //指定編碼字符集

 

以上3個方法都可在末尾指定參數個數可變的的可選參數OpenOption,經常使用的值:

  • StandardOpenOption.APPEND    追加
  • StandardOpenOption.READ    讀
  • StandardOpenOption.WRITE   寫
  • StandardOpenOption.SYNC   同步寫到磁盤文件
  • StandardOpenOption.DELETE_ON_CLOSE   關閉時刪除文件

參數個數可變,可同時使用多個預約義的值,放在參數表最後面,以逗號分隔。

 

 

 

 

建立對象:

  • Files.newBufferedReader(Path path);
  • Files.newBufferedReader(Path path,Charset charset); //可指定解碼字符集

 

  • Files.newBufferedWriter(Path path);
  • Files.newBufferedWriter(Path path, Charset charset); //可指定編碼字符集
  以上2個方法都可指定參數個數可變的OpenOption。

  • Files.newInputStream(Path path);
  • Files.newOutputStream(Path path);
  以上2個方法都可指定參數個數可變的OpenOption。
相關文章
相關標籤/搜索