前言:
在工作当中我们往往遇到很多文件的操作,我们也习惯写一些自己定义的工具类来简化文件操作,其实apache的commons的FileUtils类就是这样一个工具类,使用它能大大的简化我们对文件的操作。
准备工作:
1.下载jar 地址:http://commons.apache.org/proper/commons-io/download_io.cgi
2.把commons-io-2.4.jar 这个文件导入到你的项目中
说明:
1.由于是一个工具类使用都非常的简单 所以本文只是将其分类,展示它能够提供给我们什么。
2.习惯看api的可以直接看官方的api 传送门
3.可以看一看官方的指引 指引传送门
4.FileUtils只是commons-io的其中一个工具类
分类说明演示:
1.写 文件/文件夹
- /*写文件
- *1.这里只列出3种方式全参数形式,api提供部分参数的方法重载
- *2.最后一个布尔参数都是是否是追加模式
- *3.如果目标文件不存在,FileUtils会自动创建
- **/
- //staticvoid:write(Filefile,CharSequencedata,Stringencoding,booleanappend)
- FileUtils.write(newFile("D:/a/b/cxyapi.txt"),"程序换api","UTF-8",true);
- //staticvoid:writeLines(Filefile,Collection<?>lines,booleanappend)
- List<String>lines=newArrayList<String>();
- lines.add("欢迎访问:");lines.add("www.cxyapi.com");
- FileUtils.writeLines(newFile("D:/a/b/cxyapi.txt"),lines,true);
- //staticvoid:writeStringToFile(Filefile,Stringdata,Stringencoding,booleanappend)
- FileUtils.writeStringToFile(newFile("D:/a/b/cxyapi.txt"),"作者:cxy","UTF-8",true);
2.读 文件/文件夹
- //读文件
- //staticString:readFileToString(Filefile,Stringencoding)
- System.out.println(FileUtils.readFileToString(newFile("D:/a/b/cxyapi.txt"),"UTF-8"));
- //staticList<String>:readLines(Filefile,Stringencoding)
- System.out.println(FileUtils.readLines(newFile("D:/a/b/cxyapi.txt"),"UTF-8"));//返回一个list
3.删除 文件/文件夹
- //删除目录
- //staticvoid:deleteDirectory(Filedirectory)
- FileUtils.deleteDirectory(newFile("D:/not/cxyapi"));
- //staticboolean:deleteQuietly(Filefile)
- FileUtils.deleteQuietly(newFile("D:/not/cxyapi"));//文件夹不是空任然可以被删除,永远不会抛出异常
4.移动 文件/文件夹
- //移动文件或文件夹
- //staticvoid:moveDirectory(FilesrcDir,FiledestDir)
- FileUtils.moveDirectory(newFile("D:/cxyapi1"),newFile("D:/cxyapi2"));//注意这里第二个参数文件不存在会引发异常
- //staticvoid:moveDirectoryToDirectory(Filesrc,FiledestDir,booleancreateDestDir)
- FileUtils.moveDirectoryToDirectory(newFile("D:/cxyapi2"),newFile("D:/cxyapi3"),true);
- /*上面两个方法的不同是:
- *moveDirectory:D:/cxyapi2里的内容是D:/cxyapi1的内容。
- *moveDirectoryToDirectory:D:/cxyapi2文件夹移动到到D:/cxyapi3里
- *
- *下面的3个都比较简单没提供示例,只提供了api
- *其中moveToDirectory和其他的区别是它能自动识别操作文件还是文件夹
- */
- //staticvoid:moveFileToDirectory(srcFile,destDir,createDestDir)
- //staticvoid:moveFile(FilesrcFile,FiledestFile)
- //staticvoid:moveToDirectory(Filesrc,FiledestDir,booleancreateDestDir)
5.copy
- //结果是cxyapi和cxyapi1在同一目录
- FileUtils.copyDirectory(newFile("D:/cxyapi"),newFile("D:/cxyapi1"));
- //结果是将cxyapi拷贝到cxyapi2下
- FileUtils.copyDirectoryToDirectory(newFile("D:/cxyapi"),newFile("D:/cxyapi2"));
- //拷贝文件
- FileUtils.copyFile(newFile("d:/cxyapi.xml"),newFile("d:/cxyapi.xml.bak"));
- //拷贝文件到目录中
- FileUtils.copyFileToDirectory(newFile("d:/cxyapi.xml"),newFile("d:/cxyapi"));
- //拷贝url到文件
- FileUtils.copyURLToFile(newURL("http://www.cxyapi.com/rss/cxyapi.xml"),newFile("d:/cxyapi.xml"));
6.其他
- //判断是否包含文件或者文件夹
- booleanb=FileUtils.directoryContains(newFile("D:/cxyapi"),newFile("D:/cxyapi/cxyapi.txt"));
- System.out.println(b);
- //获得临时目录和用户目录
- System.out.println(FileUtils.getTempDirectoryPath());
- System.out.println(FileUtils.getUserDirectoryPath());
- //打开流,如果不存在创建文件及其目录结构
- //第二个参数表示文件流是否是追加方式
- FileOutputStreamfos=FileUtils.openOutputStream(newFile("D:/cxyapi/cxyapi.txt"),true);
- fos.write(newString("欢迎访问:www.cxyapi.com ").getBytes());
- fos.close();
- //文件或文件夹大小
- System.out.println(FileUtils.sizeOf(newFile("D:/cxyapi")));
- System.out.println(FileUtils.sizeOfDirectory(newFile("D:/cxyapi")));