org.apache.commons.io——FileUtils學習筆記


FileUtils類的應用

1、寫入一個文件;

2、從文件中讀取;

3、創建一個文件夾,包括文件夾;

4、復制文件和文件夾;

5、刪除文件和文件夾;

6、從URL地址中獲取文件;

7、通過文件過濾器和擴展名列出文件和文件夾;

8、比較文件內容;

9、文件最后的修改時間;

10、計算校驗和。

 

一、 復制文件或文件夾方法:

示例:

 1 public class CopyFileorDirectory {
 2     public static void main(String[] args) throws Exception { 3 File file1 =new File("path1"); 4 File file2 =new File("path2"); 5 File file3 =new File("path3"); 6 File file4 =new File("path4"); 7 File file5 =new File("path5"); 8 //將文件復制到指定文件夾中,保存文件日期的時間。 9 // 該方法將指定源文件的內容復制到指定目標目錄中相同名稱的文件中。 10 // 如果不存在,則創建目標目錄。如果目標文件存在,則該方法將覆蓋它。 11 FileUtils.copyFileToDirectory(file1,file2);//文件不重命 12 //將文件復制到一個新的地方(重命名文件)並保存文件日期的時間。 13  FileUtils.copyFile(file1,file3); 14 15 //復制文件夾到指定目錄下,如果指定目錄不存在則創建 16  FileUtils.copyDirectoryToDirectory(file2,file4); 17 18 //復制文件夾到指定目錄下並重命名 19  FileUtils.copyDirectory(file4,file5); 20 21 //該方法將指定的源目錄結構復制到指定的目標目錄中。 22  FileUtils.copyDirectory(file4,file5, DirectoryFileFilter.DIRECTORY); 23 24 // 復制文件夾下第一級內容中指定后綴文件 25 IOFileFilter txtSuffixFilter = FileFilterUtils.suffixFileFilter(".txt"); 26 IOFileFilter txtFiles = FileFilterUtils.and(FileFileFilter.FILE, txtSuffixFilter); 27  FileUtils.copyDirectory(file4,file5, txtFiles); 28 29 // 復制文件目錄結構及文件夾下第一級目錄內指定后綴文件 30 FileFilter filter = FileFilterUtils.or(DirectoryFileFilter.DIRECTORY, txtFiles); 31 FileUtils.copyDirectory(file4,file5, filter,false);//preserveFileDate參數默認為true。 32 33 //將字節從URL源復制到文件目的地。如果它們還不存在,則將創建到目的地的目錄。如果已經存在,文件將被覆蓋。 34 URL source = new URL("http://imgsrc.baidu.com/baike/pic/ewe.jpg"); 35 FileUtils.copyURLToFile(source,file5,1000,1000); 36 37 // 等待NFS傳播文件創建,並強制執行超時。該方法重復測試File.exists(),直到它返回true,或直到秒內指定的最大時間。 38 File file = new File("/abc/"); 39 boolean d = FileUtils.waitFor(file,100); 40  System.out.println(d); 41  } 42 }

 二、刪除文件或文件方法

 1 public class FileorDirectoryDelete {
 2     public static void main(String[] args) throws Exception{ 3 File file = new File("path1"); 4 File directory = new File("path2"); 5 //遞歸刪除一個目錄(包括內容)。 6  FileUtils.deleteDirectory(directory); 7 8 //刪除一個文件,不會拋出異常。如果文件是一個目錄,刪除它和所有子目錄。 9  FileUtils.deleteQuietly(file); 10 11 //清理內容而不刪除它。 12  FileUtils.cleanDirectory(directory); 13 14 //刪除一個文件,會拋出異常 15 //如果file是文件夾,就刪除文件夾及文件夾里面所有的內容。如果file是文件,就刪除。 16 //如果某個文件/文件夾由於某些原因無法被刪除,會拋出異常 17  FileUtils.forceDelete(file); 18  } 19 }

三、創建目錄

 1 public class CreatDirectory {
 2     public static void main(String[] args) throws Exception { 3 File file = new File("path"); 4 //創建一個文件夾,如果由於某些原因導致不能創建,則拋出異常 5 //一次可以創建單級或者多級目錄 6 FileUtils.forceMkdir(new File("/Users/wuguibin/Downloads/folder")); 7 //為指定文件創建文件的父級目錄 8  FileUtils.forceMkdirParent(file); 9  } 10 }

四、移動文件或文件夾

//移動文件夾,並重新命名
FileUtils.moveDirectory(new File("/Users/Downloads/file1"),
       new File("/Users/Downloads/file2/file3")); //移動文件夾,並給定是否重命名 FileUtils.moveDirectoryToDirectory(new File("/Users/Downloads/file1"), new File("/Users/Downloads/file2/"),false);
//移動文件到指定文件夾中,並重新命名 FileUtils.moveFile(file1,new File("/Users/Downloads/海葡萄.jpen"));
//移動文件到指定文件夾中,並給定是否創建文件夾 FileUtils.moveFileToDirectory(new File("/Users/Downloads/海葡萄.jpeg"), new File("/Users/Downloads/file2"),false);

五、判斷文件是否相同或包含關系、獲取文件或文件夾大小

//確定父目錄是否包含指定子元素(一個文件或目錄)。即directory是否包含file2,在比較之前,文件是標准化的。
boolean a = FileUtils.directoryContains(directory,file2);
//比較兩個文件的內容,以確定它們是否相同。
boolean b = FileUtils.contentEquals(file1, file2)

//獲取指定文件或文件夾大小,有可能溢出,變為負值
long l = FileUtils.sizeOf(file1);
System.out.println(l+"KB");
//獲取指定文件或文件夾大小,不溢出
BigInteger bi= FileUtils.sizeOfAsBigInteger(file1);
System.out.println(bi+"kb");

//遞歸地計算一個目錄的大小(所有文件的長度的總和)。
//注意,sizeOfDirectory()沒有檢測溢出,如果溢出發生,返回值可能為負。sizeOfDirectoryAsBigInteger()方法則不溢出。
FileUtils.sizeOfDirectory(file1);
FileUtils.sizeOfDirectoryAsBigInteger(file1);

 六、比較文件新舊

  //比較指定文件是否比參考文件創建或修改后時間晚
  boolean b = FileUtils.isFileNewer(file1,file2));
 
  //如果指定的文件比指定的日期更新。
  SimpleDateFormat date = new SimpleDateFormat("yyyy/MM/dd"); String date1 = "2017/06/20"; boolean c = FileUtils.isFileNewer(file1,date.parse(date1)); boolean d = FileUtils.isFileNewer(file1,23243); //指定文件創建或修改后的時間是否比參考文件或日期早 FileUtils.isFileOlder(file1,232434); FileUtils.isFileOlder(file1,System.currentTimeMillis());

七、寫入文件

 //把集合里面的內容寫入文件,以指定字符串結束寫入
//void writeLines(File file,Collection<?> lines,String lineEnding,boolean append)
ArrayList<String> list = new ArrayList<>(); String str1 = "Java"; String str2 = "JSP"; list.add(str1); list.add(str2); FileUtils.writeLines(file8,"GBK",list,"java",true);
//把字符串寫入文件 //參數1:需要寫入的文件,如果文件不存在,將自動創建。 參數2:需要寫入的內容 //參數3:編碼格式 參數4:是否為追加模式( ture: 追加模式,把字符串追加到原內容后面) String data1 = "認真"; FileUtils.writeStringToFile(file,data1, "UTF-8", true); //把字節數組寫入文件 byte [] buf = {13,123,34}; System.out.println(new String(buf)); FileUtils.writeByteArrayToFile(file13,buf,0,buf.length,true);

八、讀取文件及獲取輸入輸出流

 //將文件的內容讀入一個字符串中。
 String str =  FileUtils.readFileToString(file,"UTF-16" ); FileUtils.readFileToByteArray(file); //把文件讀取到字節數組里面 byte[] readFileToByteArray(final File file) //把文件讀取成字符串 ;Charset encoding:編碼格式 String readFileToString(final File file, final Charset encoding) //把文件讀取成字符串集合 ;Charset encoding:編碼格式  List<String> list4 =FileUtils.readLines( new File("/Users/Shared/筆記/java.txt"),"UTF-8"); Iterator it = list4.iterator(); while (it.hasNext()){ Object obj=it.next(); System.out.println(obj); } //獲取輸入流 FileUtils.openInputStream(file); //獲取輸出流 FileUtils.openOutputStream(file);

 


免責聲明!

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



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