设为首页 收藏本站
查看: 948|回复: 0

[经验分享] org.apache.commons.io.FileUtils学习

[复制链接]

尚未签到

发表于 2017-1-6 10:23:18 | 显示全部楼层 |阅读模式
利用org.apache.commons.io.FileUtils快速读写文件
http://php.11519.net/5jblog/?p=475
API:http://commons.apache.org/io/api-release/org/apache/commons/io/FileUtils.html
String fileName = "C://11.txt";
File file = new File(fileName);
String fileContent = "";
try {
fileContent = org.apache.commons.io.FileUtils.readFileToString(file, "GBK");
} catch (IOException e) {
e.printStackTrace();
}
fileContent +="Helloworld";
try {
org.apache.commons.io.FileUtils.writeStringToFile(file, fileContent, "GBK");
} catch (IOException e) {
e.printStackTrace();
}


其他参考
CommonsIO方便读写文件的工具类:http://laoyu.info/archives/282.html
Commons IO是apache的一个开源的工具包,封装了IO操作的相关类,使用Commons IO可以很方便的读写文件,url源代码等.
普通地读取一个网页的源代码的代码可能如下

  • InputStreamin =newURL("http://laoyu.info").openStream();
  • try{
  • InputStreamReaderinR =newInputStreamReader(in);
  • BufferedReaderbuf =newBufferedReader(inR);
  • Stringline;
  • while((line= buf.readLine())!=null){
  •   System.out.println(line);
  • }
  • }finally{
  • in.close();
  • }

使用了Commons IO,则可以大大简化代码.如下:

  • InputStreamin =newURL("http://laoyu.info").openStream();
  • try{
  • System.out.println(IOUtils.toString(in));
  • }finally{
  • IOUtils.closeQuietly(in);
  • }

Commons IO里的常用类
FileUtils包含了文件操作的相关方法.
下面的代码用于读取磁盘上的某个文件:


  • Filefile =newFile("c:/test.txt");
  • Listlines = FileUtils.readLines(file,"UTF-8");

FileSystemUtils 可以获得指定磁盘路径的可用空间

  • longfreeSpace = FileSystemUtils.freeSpace("d:/");

文件复制代码:

  • Filesrc =newFile("src.txt");
  • Filedest =newFile("dest.txt");
  • FileUtils.copyFile(src, dest);

补充:
方便地下载文件到本地


  • InputStreamin =new
  • URL("http://www.baidu.com/img/baidu_logo.gif").openStream();
  • byte[]gif= IOUtils.toByteArray(in);
  • //IOUtils.write(gif,new FileOutputStream(new File("c:/test.gif")));
  • FileUtils.writeByteArrayToFile(newFile("c:/test.gif"),gif);
  • IOUtils.closeQuietly(in);



分享 commons io 工具类 代码:http://www.javaeye.com/topic/575996
输入流复制到输出流
Java代码


  • publicclassIoTest{

  • /**
  • *@paramargs
  • */
  • publicstaticvoidmain(String[]args)throwsException{
  • //TODOAuto-generatedmethodstub
  • Writerwrite=newFileWriter("c:\\kk.dat");

  • InputStreamins=newFileInputStream(newFile("c:\\text.txt"));

  • IOUtils.copy(ins,write);
  • write.close();

  • ins.close();
  • }

  • }



文本写入指定文件

Java代码


  • publicclassFileWirterTest{

  • /**
  • *@paramargs
  • */
  • publicstaticvoidmain(String[]args)throwsException{
  • //TODOAuto-generatedmethodstub

  • Stringname="mynameispanxiuyan";

  • Filefile=newFile("c:\\name.txt");

  • FileUtils.writeStringToFile(file,name);

  • }

  • }




将输入流转换成文本

Java代码


  • publicclassURLIoTest{

  • /**
  • *@paramargs
  • */
  • publicstaticvoidmain(String[]args)throwsException{
  • //TODOAuto-generatedmethodstub
  • URLurl=newURL("http://www.dimurmill.com");

  • InputStreamins=url.openStream();

  • Stringcontents=IOUtils.toString(ins,"UTF-8");
  • System.out.println("Slashdot:"+contents);


  • }

  • }



关闭相关流

Java代码


  • publicclassIoCloseTest{

  • /**
  • *@paramargs
  • */
  • publicstaticvoidmain(String[]args){
  • //TODOAuto-generatedmethodstub

  • Filefile=null;

  • InputStreamins=null;
  • try{
  • file=newFile("C:\\Test.java");

  • ins=newFileInputStream(file);
  • }catch(Exceptione){
  • e.printStackTrace();
  • }finally{
  • IOUtils.closeQuietly(ins);
  • }

  • }

  • }




文件复制

Java代码


  • publicclassFileCopyTest{

  • /**
  • *@paramargs
  • */
  • publicstaticvoidmain(String[]args)throwsException{
  • //TODOAuto-generatedmethodstub

  • Filesrcfile=newFile("c:\\Test.java");

  • Filedestfile=newFile("c:\\Test.java.bak");


  • FileUtils.copyFile(srcfile,destfile);

  • }

  • }



文件复制指定的目录

Java代码


  • publicclassFileCopyTest{

  • /**
  • *@paramargs
  • */
  • publicstaticvoidmain(String[]args)throwsException{
  • //TODOAuto-generatedmethodstub

  • Filesrcfile=newFile("c:\\Test.java");

  • FiledestDir=newFile("D:\\");


  • FileUtils.copyFileToDirectory(srcfile,destDir);

  • }

  • }



网络流保存为文件

Java代码


  • publicclassURLToFileTest{

  • /**
  • *@paramargs
  • */
  • publicstaticvoidmain(String[]args)throwsException{
  • //TODOAuto-generatedmethodstub

  • URLurl=newURL("http://www.163.com");

  • Filefile=newFile("c:\\163.html");

  • FileUtils.copyURLToFile(url,file);

  • }

  • }




文件目录操作

Java代码


  • publicclassDirOper{

  • /**
  • *@paramargs
  • */
  • publicstaticvoidmain(String[]args)throwsException{
  • //TODOAuto-generatedmethodstub

  • Filedir=newFile("c:\\test");

  • FileUtils.cleanDirectory(dir);//清空目录下的文件

  • FileUtils.deleteDirectory(dir);//删除目录和目录下的文件

  • }

  • }




目录大小

Java代码


  • longsize=FileUtils.sizeOfDirectory(dir);




目录操作

Java代码


  • FiletestFile=newFile("testFile.txt");

  • //如果不存在,新建

  • //如果存在,修改文件修改时间

  • FileUtils.touch(testFile);





记录流的读取写入字节数

Java代码


  • Filetest=newFile("test.dat");

  • //输出流的统计
  • CountingOutputStreamcountStream=null;

  • //输入流的统计
  • //CountingInputStreamcountStream=null;




  • try{

  • FileOutputStreamfos=newFileOutputStream(test);

  • countStream=newCountingOutputStream(fos);

  • countStream.write("Hello".getBytes());

  • }catch(IOExceptionioe){

  • System.out.println("Errorwritingbytestofile.");

  • }finally{

  • IOUtils.closeQuietly(countStream);

  • }



  • if(countStream!=null){

  • intbytesWritten=countStream.getCount();

  • System.out.println("Wrote"+bytesWritten+"bytestotest.dat");

  • }




相同的内容写入不同的文本

Java代码


  • Filetest1=newFile("split1.txt");

  • Filetest2=newFile("split2.txt");

  • OutputStreamoutStream=null;



  • try{

  • FileOutputStreamfos1=newFileOutputStream(test1);

  • FileOutputStreamfos2=newFileOutputStream(test2);

  • //包含不同的文本
  • outStream=newTeeOutputStream(fos1,fos2);



  • outStream.write("OneTwoThree,Test".getBytes());

  • outStream.flush();

  • }catch(IOExceptionioe){

  • System.out.println("Errorwritingtosplitoutputstream");

  • }finally{

  • IOUtils.closeQuietly(outStream);

  • }

转自:http://www.cnblogs.com/hellofei/archive/2010/04/10/1707131.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-324593-1-1.html 上篇帖子: 集成 WebSphere Message Broker 与 Apache ActiveMQ 下篇帖子: Apache ActiveMQ or Spring 使用方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表