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

[经验分享] 利用 org.apache.commons.io.FileUtils快速读写文件(转)

[复制链接]

尚未签到

发表于 2017-1-11 07:56:35 | 显示全部楼层 |阅读模式
利用 org.apache.commons.io.FileUtils快速读写文件

http://php.11519.net/5jblog/?p=475

  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();
  }



其他参考

Commons IO方便读写文件的工具类:http://laoyu.info/archives/282.html

Commons IO是apache的一个开源的工具包,封装了IO操作的相关类,使用Commons IO可以很方便的读写文件,url源代码等.

普通地读取一个网页的源代码的代码可能如下

    InputStream in = new URL( "http://laoyu.info" ).openStream();
     try {
       InputStreamReader inR = new InputStreamReader( in );
       BufferedReader buf = new BufferedReader( inR );
       String line;
       while ( ( line = buf.readLine() ) != null ) {
         System.out.println( line );
       }
     } finally {
       in.close();
     }

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

    InputStream in = new URL( "http://laoyu.info" ).openStream();
     try {
       System.out.println( IOUtils.toString( in ) );
     } finally {
       IOUtils.closeQuietly(in);
     }

Commons IO里的常用类

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

    File file = new File("c:/test.txt");
    List lines = FileUtils.readLines(file, "UTF-8");

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

    long freeSpace = FileSystemUtils.freeSpace("d:/");

文件复制代码:

    File src = new File("src.txt");
    File dest = new File("dest.txt");
    FileUtils.copyFile(src, dest);

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

    InputStream in = 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(new File("c:/test.gif"),gif);
      IOUtils.closeQuietly(in);





分享 commons io 工具类 代码:http://www.javaeye.com/topic/575996

输入流复制到输出流
Java代码

    public class IoTest {  
      
        /**
         * @param args
         */  
        public static void main(String[] args) throws Exception {  
            // TODO Auto-generated method stub  
            Writer write = new FileWriter("c:\\kk.dat");  
      
            InputStream ins = new FileInputStream(new File("c:\\text.txt"));  
      
            IOUtils.copy(ins, write);  
            write.close();  
      
            ins.close();  
        }  
      
    }  



文本写入指定文件
Java代码

    public class FileWirterTest {  
      
        /**
         * @param args
         */  
        public static void main(String[] args) throws Exception{  
            // TODO Auto-generated method stub  
              
            String name = "my name is panxiuyan";  
              
            File file =  new File("c:\\name.txt");  
              
            FileUtils.writeStringToFile(file, name);  
      
        }  
      
    }  




将输入流转换成文本
Java代码

    public class URLIoTest {  
      
        /**
         * @param args
         */  
        public static void main(String[] args) throws Exception {  
            // TODO Auto-generated method stub  
            URL url = new URL("http://www.dimurmill.com");  
              
            InputStream ins = url.openStream();  
              
            String contents = IOUtils.toString(ins,"UTF-8");  
            System.out.println( "Slashdot: " + contents );  
      
      
        }  
      
    }  



关闭相关流
Java代码

    public class IoCloseTest {  
      
        /**
         * @param args
         */  
        public static void main(String[] args) {  
            // TODO Auto-generated method stub  
              
            File file = null;  
              
            InputStream ins = null;  
            try{  
                file = new File("C:\\Test.java");  
                  
                ins = new FileInputStream(file);  
            }catch(Exception e){  
                e.printStackTrace();  
            }finally{  
                IOUtils.closeQuietly(ins);  
            }  
      
        }  
      
    }  




文件复制
Java代码

    public class FileCopyTest {  
      
        /**
         * @param args
         */  
        public static void main(String[] args) throws Exception{  
            // TODO Auto-generated method stub  
              
            File srcfile = new File("c:\\Test.java");  
              
            File destfile = new File("c:\\Test.java.bak");  
              
              
            FileUtils.copyFile(srcfile, destfile);  
      
        }  
      
    }  



文件复制指定的目录
Java代码

    public class FileCopyTest {  
      
        /**
         * @param args
         */  
        public static void main(String[] args) throws Exception{  
            // TODO Auto-generated method stub  
              
            File srcfile = new File("c:\\Test.java");  
              
            File destDir = new File("D:\\");  
              
              
            FileUtils.copyFileToDirectory(srcfile, destDir);  
      
        }  
      
    }  



网络流保存为文件
Java代码

    public class URLToFileTest {  
      
        /**
         * @param args
         */  
        public static void main(String[] args) throws Exception{  
            // TODO Auto-generated method stub  
              
            URL url = new URL("http://www.163.com");  
              
            File file = new File("c:\\163.html");  
              
            FileUtils.copyURLToFile(url, file);  
      
        }  
      
    }  




文件目录操作
Java代码

    public class DirOper {  
      
        /**
         * @param args
         */  
        public static void main(String[] args) throws Exception {  
            // TODO Auto-generated method stub  
      
            File dir = new File("c:\\test");  
      
            FileUtils.cleanDirectory(dir);//清空目录下的文件  
      
            FileUtils.deleteDirectory(dir);//删除目录和目录下的文件  
      
        }  
      
    }  




目录大小
Java代码

    long size = FileUtils.sizeOfDirectory(dir);  




目录操作
Java代码

    File testFile = new File( "testFile.txt" );  
      
         //如果不存在,新建  
      
        // 如果存在,修改文件修改时间  
      
        FileUtils.touch( testFile );  
      




记录流的读取写入字节数
Java代码

    File test = new File( "test.dat" );  
      
    //输出流的统计  
    CountingOutputStream countStream = null;  
      
    //输入流的统计  
    //CountingInputStream countStream = null;  
      
      
      
      
    try {  
      
        FileOutputStream fos = new FileOutputStream( test );  
      
        countStream = new CountingOutputStream( fos );  
      
        countStream.write( "Hello".getBytes( ) );  
      
    } catch( IOException ioe ) {  
      
        System.out.println( "Error writing bytes to file." );  
      
    } finally {  
      
        IOUtils.closeQuietly( countStream );  
      
    }  
      
      
      
    if( countStream != null ) {  
      
        int bytesWritten = countStream.getCount( );  
      
        System.out.println( "Wrote " + bytesWritten + " bytes to test.dat" );  
      
    }  




相同的内容写入不同的文本
Java代码

    File test1 = new File("split1.txt");  
      
    File test2 = new File("split2.txt");  
      
    OutputStream outStream = null;  
      
              
      
    try {  
      
        FileOutputStream fos1 = new FileOutputStream( test1 );  
      
        FileOutputStream fos2 = new FileOutputStream( test2 );  
      
        //包含不同的文本  
        outStream = new TeeOutputStream( fos1, fos2 );  
      
                  
      
        outStream.write( "One Two Three, Test".getBytes( ) );  
      
        outStream.flush( );  
      
    } catch( IOException ioe ) {  
      
        System.out.println( "Error writing to split output stream" );  
      
    } finally {  
      
        IOUtils.closeQuietly( outStream );  
      
    }

运维网声明 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-326702-1-1.html 上篇帖子: Apache自带压力测试工具AB的使用方法 下篇帖子: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Inval
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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