FileUtils常用方法 - commons-io常用工具類


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 => 把指定的字符串數組變成后綴名格式字符串數組

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM