我想在Java工具中,文件操做應該也是使用至關頻繁的,可是Java對文件的操做因爲牽涉到流,因此較爲繁瑣,各類Stream也是眼花繚亂,所以大部分項目裏的util包中我想都有一個FileUtil的類,而本類就是對衆多FileUtil的總結。緩存
這些方法都是按照Linux命令來命名的,方便熟悉Linux的用戶見名知意,例如:app
ls
返回給定目錄的全部文件對象列表,路徑能夠是相對ClassPath路徑或者絕對路徑,不能夠是壓縮包裏的路徑。listFileNames
則是返回指定目錄下的全部文件名,支持jar等壓縮包。touch
建立文件,若是給定路徑父目錄不存在,也一同建立。del
刪除文件或者目錄,目錄下有嵌套目錄或者文件會一塊兒刪除。mkdir
建立目錄,父目錄不存在自動建立。createTempFile
建立臨時文件,在程序運行完畢的時候,這個文件會被刪除。copy
複製文件或目錄,目標文件對象能夠是目錄,自動用原文件名,能夠選擇是否覆蓋目標文件。move
移動文件或目錄,原理是先複製,再刪除原文件或目錄isExist
文件或者目錄是否存在。getAbsolutePath
得到絕對路徑,若是給定路勁已是絕對路徑,返回原路徑,不然根據ClassPath或者給定類的相對位置得到其絕對位置工具
close
對於實現了Closeable接口的對象,能夠直接調用此方法關閉,且是靜默關閉,關閉出錯將不會有任何調試信息。這個方法也是使用很是頻繁的,例如文件流的關閉等等。調試
equals
比較兩個文件是否相同code
getBufferedWriter
得到帶緩存的寫入對象,能夠寫字符串等。getPrintWriter
對 getBufferedWriter
的包裝,能夠有println等方法按照行寫出。getOutputStream
會的文件的寫出流想對象。writeString
直接寫字符串到文件,會覆蓋以前的內容。appendString
追加字符串到文本。writeLines
appendLines
覆蓋寫入和追加文本列表,每一個元素都是一行。writeBytes
寫字節碼。writeStream
寫流中的內容到文件裏。getReader
得到帶緩存的Reader對象。readLines
按行讀取文件中的數據,返回List,每個元素都是一行文本。load
按照給定的ReaderHandler
對象讀取文件中的數據,ReaderHandler
是一個藉口,實現後就能夠操做Reader對象了,這個方法存在是爲了不用戶手動調用close方法。readString
直接讀出文件中的全部文本。readBytes
讀字節碼isModifed
文件是否被修改過,須要傳入一個時間戳,用來比對最後修改時間。getExtension
得到文件的擴展名。