FileUtils常用常量
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常用方法
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\Administrator
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 => 獲取文件輸出流
OutputStream out = FileUtils.openOutputStream(new File("D://test/test2")); out = FileUtils.openOutputStream(new File("D://test/test3"), true);//是否追加的形式添加內容
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[]數組
// File[] toFiles(final URL[] urls) FileUtils.toFiles(null);
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 => 此方法將輸入流的內容復制到新文件
FileUtils.copyInputStreamToFile(new FileInputStream("D://test/test1"), new File("D://test/test1"));
FileUtils.copyUrlToFile => 此方法URL對應的文件復制一份
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)循環檢查一次
while (FileUtils.waitFor(new File("D://test/test1"), 60)) {}
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.lineIterator(new File("D://test/test1"), "utf-8");
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.moveToDirectory(new File("D://test/test1/target"), new File("D://test/test1/dir"), true);
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 => 把指定的字符串數組變成后綴名格式字符串數組