File

File

文件和目錄路徑名的抽象表示,通常,file:操做文件,directory:目錄/文件夾,path:路徑linux

分隔符

當在不一樣系統中路徑分割符;:和名稱分隔符/\是不一樣的,能夠使用File的靜態變量來表示以作到系統無關git

public static final String pathSeparator;
Windows中爲;分號,而linux裏則爲:冒號。這個在win和linux的環境變量的配置中的路徑就能看出github

public static final String pathSeparator
Windows中爲,而linux則爲/數組

相對路徑和絕對路徑

絕對路徑:以系統的根路徑開始的,Windows中就以盤符開始的
相對路徑:Java當前項目的根目錄開始的,不是本文件的路徑開始的函數

File的使用

建立File對象

建立File對象,只是把字符串路徑封裝成File對象,不考慮路徑的真假狀況,路徑能夠以文件或文件夾結尾,能夠是絕對路徑也能夠是相對路徑,固然路徑也能夠不實際存在測試

File(String pathname)                 經過將給定的路徑名字符串轉換爲抽象路徑名來建立新的 File實例。
File(File parent, String child)        從父抽象路徑名和子路徑名字符串建立新的 File實例。
File(String parent, String child)    從父路徑名字符串和子路徑名字符串建立新的 File實例。
File(URI uri)                                   經過將給定的 file: URI轉換爲抽象路徑名來建立新的 File實例。

獲取File的路徑

獲取絕對路徑,即便建立時傳入的是相對路徑,最後也是獲取到絕對路徑。而getPath()則就是獲取的傳入的路徑指針

public String getAbsolutePath()code

獲取文件大小

public long length()
返回由此抽象路徑名錶示的文件的長度。 若是此路徑名錶示目錄,則返回值未指定。
注意文件夾是沒有大小的,這裏length返回的是文件的大小以字節爲單位,若是沒有文件就返回0,文件夾也返回0,不是路徑的長度對象

判斷文件和文件夾是否存在

exists() 判斷文件和文件夾是否存在
isDirectory 判斷是否文文件夾/目錄
isFile() 判斷是不是文件

使用File對象建立文件和文件夾

  • 建立文件

    public boolean createNewFile()
    public boolean delete()--對應的就是刪除文件或文件夾

---當File對象傳入的路徑(路徑在File的構造方法中給出)正確,而且文件不存在時建立文件返回true,若是文件已存在返回false,若是文件路徑不存在拋出異常

  • 建立文件夾

    public boolean mkdir()
    public boolean mkdir()--建立多級文件夾

建立單級文件夾,文件夾存在則不建立返回false,沒有文件夾則建立並返回true;若是路徑不存在也不會建立而且不會拋出異常並返回false

目錄的遍歷

public String[] list() --返回一個字符串數組,命名由此抽象路徑名錶示的目錄中的文件和目錄。
public File[] listFiles()---返回一個抽象路徑名數組,表示由該抽象路徑名錶示的目錄中的文件。
list()和listFiles()在File的構造方法路徑中的路徑不存在或者不是一個目錄都會返回null空指針異常

文件過濾器

在File對象的String[] list()方法中重載了一個方法:list(FilenameFilter filter),listFiles()也重載了兩個方法File[] listFiles(FileFilter filter)和File[] listFiles(FilenameFilter filter)來對文件進行過濾

  • java.io.FileFilter函數接口
    boolean accept(File pathName) 測試指定的抽象路徑名是否應包含在路徑名列表中。
  • java.io.FilenameFilter函數接口
    boolean accept(File dir,String name) 測試指定的抽象路徑名是否應包含在路徑名列表中。

兩個接口都沒有實現類,須要本身定義實現類並重寫過濾方法

//這裏就是在使用File.listFiles()方法是傳入一個過濾器,來過濾文件流,使用lambda表達式
File[] files = dir.listFiles(file -> file.isDirectory() || file.getName().toLowerCase().endsWith(".java"));

本博客爲Swagger-Ranger的筆記分享,文章會持續更新 文中源碼地址: https://github.com/Swagger-Ranger 歡迎交流指正,若有侵權請聯繫做者確認刪除: liufei32@outlook.com

相關文章
相關標籤/搜索