org.apache.commons.io——FileUtils学习笔记
FileUtils類的應(yīng)用
1、寫入一個文件;
2、從文件中讀取;
3、創(chuàng)建一個文件夾,包括文件夾;
4、復(fù)制文件和文件夾;
5、刪除文件和文件夾;
6、從URL地址中獲取文件;
7、通過文件過濾器和擴展名列出文件和文件夾;
8、比較文件內(nèi)容;
9、文件最后的修改時間;
10、計算校驗和。
?
一、?復(fù)制文件或文件夾方法:
示例:
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 //將文件復(fù)制到指定文件夾中,保存文件日期的時間。 9 // 該方法將指定源文件的內(nèi)容復(fù)制到指定目標(biāo)目錄中相同名稱的文件中。 10 // 如果不存在,則創(chuàng)建目標(biāo)目錄。如果目標(biāo)文件存在,則該方法將覆蓋它。 11 FileUtils.copyFileToDirectory(file1,file2);//文件不重命 12 //將文件復(fù)制到一個新的地方(重命名文件)并保存文件日期的時間。 13 FileUtils.copyFile(file1,file3); 14 15 //復(fù)制文件夾到指定目錄下,如果指定目錄不存在則創(chuàng)建 16 FileUtils.copyDirectoryToDirectory(file2,file4); 17 18 //復(fù)制文件夾到指定目錄下并重命名 19 FileUtils.copyDirectory(file4,file5); 20 21 //該方法將指定的源目錄結(jié)構(gòu)復(fù)制到指定的目標(biāo)目錄中。 22 FileUtils.copyDirectory(file4,file5, DirectoryFileFilter.DIRECTORY); 23 24 // 復(fù)制文件夾下第一級內(nèi)容中指定后綴文件 25 IOFileFilter txtSuffixFilter = FileFilterUtils.suffixFileFilter(".txt"); 26 IOFileFilter txtFiles = FileFilterUtils.and(FileFileFilter.FILE, txtSuffixFilter); 27 FileUtils.copyDirectory(file4,file5, txtFiles); 28 29 // 復(fù)制文件目錄結(jié)構(gòu)及文件夾下第一級目錄內(nèi)指定后綴文件 30 FileFilter filter = FileFilterUtils.or(DirectoryFileFilter.DIRECTORY, txtFiles); 31 FileUtils.copyDirectory(file4,file5, filter,false);//preserveFileDate參數(shù)默認為true。 32 33 //將字節(jié)從URL源復(fù)制到文件目的地。如果它們還不存在,則將創(chuàng)建到目的地的目錄。如果已經(jīng)存在,文件將被覆蓋。 34 URL source = new URL("http://imgsrc.baidu.com/baike/pic/ewe.jpg"); 35 FileUtils.copyURLToFile(source,file5,1000,1000); 36 37 // 等待NFS傳播文件創(chuàng)建,并強制執(zhí)行超時。該方法重復(fù)測試File.exists(),直到它返回true,或直到秒內(nèi)指定的最大時間。 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 //遞歸刪除一個目錄(包括內(nèi)容)。6 FileUtils.deleteDirectory(directory);7 8 //刪除一個文件,不會拋出異常。如果文件是一個目錄,刪除它和所有子目錄。9 FileUtils.deleteQuietly(file); 10 11 //清理內(nèi)容而不刪除它。 12 FileUtils.cleanDirectory(directory); 13 14 //刪除一個文件,會拋出異常 15 //如果file是文件夾,就刪除文件夾及文件夾里面所有的內(nèi)容。如果file是文件,就刪除。 16 //如果某個文件/文件夾由于某些原因無法被刪除,會拋出異常 17 FileUtils.forceDelete(file); 18 } 19 }三、創(chuàng)建目錄
1 public class CreatDirectory {2 public static void main(String[] args) throws Exception {3 File file = new File("path");4 //創(chuàng)建一個文件夾,如果由于某些原因?qū)е虏荒軇?chuàng)建,則拋出異常5 //一次可以創(chuàng)建單級或者多級目錄6 FileUtils.forceMkdir(new File("/Users/wuguibin/Downloads/folder"));7 //為指定文件創(chuàng)建文件的父級目錄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"));
//移動文件到指定文件夾中,并給定是否創(chuàng)建文件夾 FileUtils.moveFileToDirectory(new File("/Users/Downloads/海葡萄.jpeg"), new File("/Users/Downloads/file2"),false);
五、判斷文件是否相同或包含關(guān)系、獲取文件或文件夾大小
//確定父目錄是否包含指定子元素(一個文件或目錄)。即directory是否包含file2,在比較之前,文件是標(biāo)準(zhǔn)化的。 boolean a = FileUtils.directoryContains(directory,file2); //比較兩個文件的內(nèi)容,以確定它們是否相同。 boolean b = FileUtils.contentEquals(file1, file2)//獲取指定文件或文件夾大小,有可能溢出,變?yōu)樨撝?br />long l = FileUtils.sizeOf(file1);
System.out.println(l+"KB");
//獲取指定文件或文件夾大小,不溢出
BigInteger bi= FileUtils.sizeOfAsBigInteger(file1);
System.out.println(bi+"kb");
//遞歸地計算一個目錄的大小(所有文件的長度的總和)。
//注意,sizeOfDirectory()沒有檢測溢出,如果溢出發(fā)生,返回值可能為負。sizeOfDirectoryAsBigInteger()方法則不溢出。
FileUtils.sizeOfDirectory(file1);
FileUtils.sizeOfDirectoryAsBigInteger(file1);
?六、比較文件新舊
//比較指定文件是否比參考文件創(chuàng)建或修改后時間晚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);//指定文件創(chuàng)建或修改后的時間是否比參考文件或日期早FileUtils.isFileOlder(file1,232434); FileUtils.isFileOlder(file1,System.currentTimeMillis());七、寫入文件
//把集合里面的內(nèi)容寫入文件,以指定字符串結(jié)束寫入//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);
//把字符串寫入文件//參數(shù)1:需要寫入的文件,如果文件不存在,將自動創(chuàng)建。 參數(shù)2:需要寫入的內(nèi)容//參數(shù)3:編碼格式 參數(shù)4:是否為追加模式( ture: 追加模式,把字符串追加到原內(nèi)容后面)String data1 = "認真";FileUtils.writeStringToFile(file,data1, "UTF-8", true);//把字節(jié)數(shù)組寫入文件byte [] buf = {13,123,34};System.out.println(new String(buf));FileUtils.writeByteArrayToFile(file13,buf,0,buf.length,true);
八、讀取文件及獲取輸入輸出流
//將文件的內(nèi)容讀入一個字符串中。String str = FileUtils.readFileToString(file,"UTF-16" ); FileUtils.readFileToByteArray(file);//把文件讀取到字節(jié)數(shù)組里面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);?
轉(zhuǎn)載于:https://www.cnblogs.com/gdwkong/p/7105823.html
總結(jié)
以上是生活随笔為你收集整理的org.apache.commons.io——FileUtils学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第二轮冲刺-Runner站立会议08
- 下一篇: JAVA基础——编程练习(二)