`
shixiaomu
  • 浏览: 375226 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用 org.apache.commons.io.FileUtils快速读写文件(转)

    博客分类:
  • java
 
阅读更多
利用 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 ); 
     
    } 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics