FileUtils常用方法 - commons-io常用工具类
?
[ 常量 ]
public static final long ONE_KB = 1024;public static final BigInteger ONE_KB_BI = BigInteger.valueOf(ONE_KB);public static final long ONE_MB = ONE_KB * ONE_KB;public static final BigInteger ONE_MB_BI = ONE_KB_BI.multiply(ONE_KB_BI);private static final long FILE_COPY_BUFFER_SIZE = ONE_MB * 30;public static final long ONE_GB = ONE_KB * ONE_MB;public static final BigInteger ONE_GB_BI = ONE_KB_BI.multiply(ONE_MB_BI);public static final long ONE_TB = ONE_KB * ONE_GB;public static final BigInteger ONE_TB_BI = ONE_KB_BI.multiply(ONE_GB_BI);public static final long ONE_PB = ONE_KB * ONE_TB;public static final BigInteger ONE_PB_BI = ONE_KB_BI.multiply(ONE_TB_BI);public static final long ONE_EB = ONE_KB * ONE_PB;public static final BigInteger ONE_EB_BI = ONE_KB_BI.multiply(ONE_PB_BI);public static final BigInteger ONE_ZB = BigInteger.valueOf(ONE_KB).multiply(BigInteger.valueOf(ONE_EB));public static final BigInteger ONE_YB = ONE_KB_BI.multiply(ONE_ZB);public static final File[] EMPTY_FILE_ARRAY = new File[0];?
[ 常用方法?]
FileUtils.getFile => 獲取指定文件
File file = FileUtils.getFile("D://test/test1/123.txt");?
FileUtils.getFile => 獲取指定目錄下的:"lalala.txt", "lalala2.txt"
File file1 = FileUtils.getFile(new File("D://test/test1"), "123.txt", "456.txt");?
FileUtils.getTempDirectoryPath => 獲取臨時目錄 File對象
File tempDirectory = FileUtils.getTempDirectory();?
FileUtils.getTempDirectoryPath => 獲取臨時目錄路徑字符串
System.out.println(FileUtils.getTempDirectoryPath()); // C:\Users\han\AppData\Local\Temp\?
FileUtils.getUserDirectory??=>?獲取用戶主目錄 File對象
File userDirectory = FileUtils.getUserDirectory();?
FileUtils.getUserDirectoryPath ?=>?獲取用戶主目錄路徑字符串
System.out.println(FileUtils.getUserDirectoryPath()); // C:\Users\han\?
FileUtils.byteCountToDisplaySize ?=>?以可讀的方式,返回文件的大小EB, PB, TB, GB, MB, KB or bytes
System.out.println(FileUtils.byteCountToDisplaySize(10000000)); // 9 MB System.out.println(FileUtils.byteCountToDisplaySize(1)); // 1 bytes?
FileUtils.sizeOf => 讀取文件大小
FileUtils.sizeOf(new File("D://test/test1"));//返回Long FileUtils.sizeOfAsBigInteger(new File("D://test/test1"));//返回BigInteger?
FileUtils.sizeOfDirectory => 目錄,級聯計算文件下的所有文件大小
FileUtils.sizeOfDirectory(new File("D://test/test1"));//返回Long FileUtils.sizeOfDirectoryAsBigInteger(new File("D://test/test1"));//返回BigInteger?
FileUtils.copyDirectory =>?復制文件夾(文件夾里面的文件內容也會復制
String filePath1 = "D://test/test1" ; File srcDir = new File( filePath1 ) ;String filePath2 = "D://test/test2" ; File destDir = new File( filePath2 ) ;try {//復制文件夾FileUtils.copyDirectory(srcDir, destDir); } catch (IOException e) {e.printStackTrace(); }?
FileUtils.copyDirectoryToDirectory =>?此方法將目錄1所有的文件夾及文件復制到目錄2下,如果有同名文件夾則合并,如果有同名文件則替換
try {//復制文件夾FileUtils.copyDirectoryToDirectory(srcDir, destDir); } catch (IOException e) {e.printStackTrace(); }?
FileUtils.copyDirectory?=> 復制文件夾,帶有文件過濾功能
try {///僅僅拷貝目錄FileUtils.copyDirectory(srcDir, destDir, DirectoryFileFilter.DIRECTORY); } catch (IOException e) {e.printStackTrace(); }IOFileFilter txtSuffixFilter = FileFilterUtils.suffixFileFilter(".txt");// 創建.txt過濾器 IOFileFilter txtFiles = FileFilterUtils.andFileFilter(FileFileFilter.FILE, txtSuffixFilter); // 創建包含目錄或者txt文件的過濾器 FileFilter filter = FileFilterUtils.orFileFilter(DirectoryFileFilter.DIRECTORY, txtFiles); // Copy using the filter FileUtils.copyDirectory(srcDir, destDir, filter);//TODO 閱讀doCopyDirectory源碼?
FileUtils.openInputStream =>?獲取文件輸入流
InputStream in = FileUtils.openInputStream(new File("D://test/test1"));
FileUtils.openOutputStream =>??獲取文件輸出流
?
FileUtils.touch => 創建文件,如果文件存在則更新時間;如果不存在,創建一個空文件
FileUtils.touch(new File("D://test/test4"));?
FileUtils.contentEquals => 文件內容的對比
FileUtils.contentEquals(new File("D://test/test1"), new File("D://test/test2")); FileUtils.contentEqualsIgnoreEOL(new File("D://test/test1"), new File("D://test/test2"), null);//忽略換行符,第三個參數是字符集?
FileUtils.toFile => 根據URL獲取文件
//FileUtils.toFile(URL url)使用相對路徑創建一個File對象 String data = FileUtils.readFileToString(FileUtils.toFile(AjavaURLToFile.class.getResource("/ajava.txt"))); System.out.println("data = " + data);//FileUtils.toFile(URL url)使用絕對路徑創建一個File對象 File file = FileUtils.toFile(new URL("file://D:/ajavademo.txt")); data = FileUtils.readFileToString(file); System.out.println("data = " + data);
FileUtils.toFiles => 根據多個URL獲取多個文件文件,返回File[]數組
?
FileUtils.toURLs => 文件地址轉為URL
FileUtils.toURLs(new File[]{new File("D://test/test1")});?
FileUtils.copyFileToDirectory =>?此方法將b文件夾下的123.txt拷貝到指定文件夾下,如果有同名文件則替換,前者沒有報錯,后者沒有新建
FileUtils.copyFileToDirectory(new File("C://Users/han/Desktop/新建文件夾/123/123.txt"),new File("C://Users/han/Desktop/新建文件夾/456") );?
FileUtils.copyFile => 此方法將b文件夾下a.doc拷貝到mm下a.doc,前者不存在會報錯,后者不存在會新建,如果后者存在同名文件則替換
FileUtils.copyFile(new File("d:/b/a.doc"), new File("d:/b/mm/a.doc")); FileUtils.copyFile(new File("d:/b/a.doc"), new File("d:/b/mm","a.doc"));//與上邊功能一樣?
//文件拷貝 FileUtils.copyInputStreamToFile(new FileInputStream("D://test/test1"), new File("D://test/test1")); FileUtils.copyURLToFile(new URL("file:/test"), new File("D://test/test1"));?
FileUtils.deleteDirectory => 刪除目錄或文件,無法刪除會拋異常
FileUtils.deleteDirectory(new File("D://test/test1"));//遞歸刪除目錄?
FileUtils.deleteQuietly => 安靜刪除目錄或文件,無法刪除時也不會拋異常
FileUtils.deleteQuietly(new File("D://test/test1"));//如果是目錄,會級聯刪除;不會拋出異常,安靜刪除?
FileUtils.directoryContains => 判斷是否包含文件或文件夾
//判斷是否包含文件或者文件夾 boolean b=FileUtils.directoryContains(new File("D:/cxyapi"), new File("D:/cxyapi/cxyapi.txt")); System.out.println(b);?
FileUtils.cleanDirectory => 清除目錄中的內容,不會刪除該目錄,?遍歷目錄中的文件,如果是目錄則遞歸刪除;如果是文件則強制刪除,刪除失敗(文件不存在或無法刪除)都會拋出異常
FileUtils.cleanDirectory(new File("D://test/test1"));
FileUtils.waitFor => 等待一個文件xx秒,知道文件創建后才返回。每max(100,remainning)循環檢查一次
?
FileUtils.readFileToString =>?讀取目標文件,返回文件內容字符串
String str = FileUtils.readFileToString(new File("D://test/test1"), "utf-8");?
FileUtils.readFileToByteArray =>?讀取目標文件,返回文件內容的bytes數組
byte[] bytes = FileUtils.readFileToByteArray(new File("D://test/test1"));?
FileUtils.readLines => 讀取目標文件每一行數據,返回list
List<String> strs = FileUtils.readLines(new File("D://test/test1"), "utf-8");
FileUtils.lineIterator =>? 讀取目標文件每一行數據,返回迭代器
?
FileUtils.writeStringToFile => 將字符串寫入文件,[目標文件] [寫入的字符串] [字符集] [是否追加]
FileUtils.writeStringToFile(new File("D://test/test1"), "string", "utf-8", true);?
write可以接受charsequence類型的數據,string,stringbuilder和stringbuffer都是實現了charsequence接口
FileUtils.write(new File("D://test/test1"), "target char sequence", "utf-8", true);FileUtils.writeByteArrayToFile(new File("D://test/test1"), "bytes".getBytes());//(file,字符數組) FileUtils.writeByteArrayToFile(new File("D://test/test1"), "bytes".getBytes(), true);//(file,字符數組,是否追加) FileUtils.writeByteArrayToFile(new File("D://test/test1"), "bytes".getBytes(), 0, 10);//(file,字符數組,起始位置,結束位置) FileUtils.writeByteArrayToFile(new File("D://test/test1"), "bytes".getBytes(), 0, 10, true);//(file,字符數組,起始位置,結束位置,是否追加)?
FileUtils.writeLines => writeLines多了一個lineEnding參數
FileUtils.writeLines(new File("D://test/test1"), "utf-8", FileUtils.readLines(new File("D://test/test1"), "utf-8"));?
FileUtils.forceDelete => 強制刪除
FileUtils.forceDelete(new File("D://test/test1"));?
FileUtils.forceDeleteOnExit => 當JVM退出時,把file對象刪除。如果是目錄對象則遞歸刪除子目錄,跟delete的區別是一個是立馬執行 一個是JVM退出后執行 forceDeleteOnExit 這個用來刪除臨時文件或緩存文件用的
try {File file2 = new File("C:\\Users\\Administrator\\Desktop\\sign\\");//當JVM退出時,把file對象刪除。如果是目錄對象則遞歸刪除子目錄,跟delete的區別是一個是立馬執行 一個是JVM退出后執行 forceDeleteOnExit 這個用來刪除臨時文件或緩存文件用的FileUtils.forceDeleteOnExit(file2); } catch (Exception e) {e.printStackTrace(); }?
FileUtils.forceMkdir => 強制創建文件目錄,如果文件存在,會拋出異常
FileUtils.forceMkdir(new File("D://test/test1"));?
?FileUtils.forceMkdirParent => 強制創建父級目錄
FileUtils.forceMkdirParent(new File("D://test/test1"));?
checksum、checksumCRC32:類似于校驗MD5和。如long csum = FileUtils.checksum(file, new CRC32()).getValue();,一般下載來一個文件后,為了安全可以校驗一下
FileUtils.checksum(new File("D://test/test1"), new CRC32()); FileUtils.checksumCRC32(new File("D://test/test1"));?
FileUtils.isSymlink => 確定指定的文件是否是符號鏈接而不是實際文件
FileUtils.isSymlink(new File("D://test/test1"));?
FileUtils.moveDirectory => 移動目錄,移動的目錄位置如果存在同名目錄會報錯
FileUtils.moveDirectory(new File("D://test/test1"), new File("D://test/test1"));?
FileUtils.moveDirectoryToDirectory => 移動目錄到指定目錄下,第3個參數為,目錄不存在是否創建
FileUtils.moveDirectoryToDirectory(new File("D://test/test1"), new File("D://test/test1"), true);?
FileUtils.moveDirectory => 移動文件,移動的文件位置如果存在同名文件會報錯
FileUtils.moveFile(new File("D://test/test1/target"), new File("D://test/test1/file"));?
FileUtils.moveFileToDirectory => 移動文件到指定目錄下,第3個參數為,目錄不存在是否創建
FileUtils.moveFileToDirectory(new File("D://test/test1/target"), new File("D://test/test1/dir"), true);
FileUtils.moveToDirectory => 將文件或目錄移動到目標目錄。
?
FileUtils.iterateFiles => 返回文件迭代器? [?目錄 ] [ 過濾器?] [ 遞歸?]
Iterator<File> files_iter = FileUtils.iterateFiles(new File("D://test"), new String[]{"test1", "test3"}, true);?
FileUtils.listFiles => 返回文件的列表 [?目錄 ] [ 過濾器?] [ 遞歸?]
List<File> files = (List<File>) FileUtils.listFiles(new File("D://test"), new String[]{"doc"}, true);// 列出該目錄下的所有doc文件,遞歸(擴展名不必帶.doc)List<File> fileList = (List<File>)FileUtils.listFiles(dir,null,false);//列出該目錄下的所有文件,不遞歸?
FileUtils.convertFileCollectionToFileArray => 把collection<File>轉換成File[]
FileUtils.convertFileCollectionToFileArray(files);?
FileUtils.isFileOlder => 該文件是否在該時間之前創建
FileUtils.isFileNewer => 該文件是否在該時間之后創建
?String string="2016-12-20 10:00:00.023"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS"); ?//最后三個大寫SSS代表毫秒,寫1個表示前邊都不補0,寫兩個只有是兩位0補全 b= FileUtils.isFileOlder(new File("D:/b/a.doc"),sdf.parse(string)); b= FileUtils.isFileNewer(new File("D:/b/a.doc"),sdf.parse(string))
FileUtils.innerListFiles => 根據一個過濾規則獲取一個目錄下的文件
FileUtils.validateListFilesParameters => 查找給定目錄中的文件(以及可選的目錄子目錄)。所有找到的文件都由IOFileFilter過濾。
FileUtils.setUpEffectiveFileFilter => 返回一個過濾器,該過濾器除了接受給定過濾器接受的{@link File}對象外,還接受其他文件。
FileUtils.listFilesAndDirs => 查找給定目錄中的文件(以及可選的目錄子目錄)。所有找到的文件都由IOFileFilter過濾。
FileUtils.iterateFilesAndDirs => 允許對給定目錄中的文件進行迭代(可選)它的子目錄)。
FileUtils.toSuffixes => 把指定的字符串數組變成后綴名格式字符串數組
?
總結
以上是生活随笔為你收集整理的FileUtils常用方法 - commons-io常用工具类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三星+android7.0+字体,三星S
- 下一篇: 黑马程序员-------------(十