org.apache.commons.io——FileUtils學習筆記,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);