Commons IO 2.5-IOUtils
转自:http://blog.csdn.net/zhaoyanjun6/article/details/55051917
福利
另外我已经把Commons IO 2.5的源码发布到Jcenter,大家就不用下载jar包了,可以直接引用。
Maven引用
<dependency>
  <groupId>org.apache.commons.io</groupId>
  <artifactId>commonsIO</artifactId>
  <version>2.5.0</version>
  <type>pom</type>
</dependency>
Gradle引用
compile 'org.apache.commons.io:commonsIO:2.5.0'
1
IOUtils流操作的相关方法
copy:这个方法可以拷贝流,算是这个工具类中使用最多的方法了。支持多种数据间的拷贝。copy内部使用的其实还是copyLarge方法。因为copy能拷贝Integer.MAX_VALUE的字节数据,即2^31-1。
copy(inputstream,outputstream)
copy(inputstream,writer)
copy(inputstream,writer,encoding)
copy(reader,outputstream)
copy(reader,writer)
copy(reader,writer,encoding)
copyLarge:这个方法适合拷贝较大的数据流,比如2G以上。
copyLarge(reader,writer) 默认会用1024*4的buffer来读取
copyLarge(reader,writer,buffer)
获取输入流
//通过文本获取输入流 , 可以指定编码格式
InputStream toInputStream(final String input, final Charset encoding)
InputStream toInputStream(final String input, final String encoding)
//获取一个缓冲输入流,默认缓冲大小 1KB
InputStream toBufferedInputStream(final InputStream input)
//获取一个指定缓冲流的大小的输入流
InputStream toBufferedInputStream(final InputStream input, int size)
//把流的全部内容放在另一个流中
BufferedReader toBufferedReader(final Reader reader)
//把流的全部内容放在另一个流中
BufferedReader toBufferedReader(final Reader reader, int size)
获取输入流里面的内容
// 输入流 --》 字符串
String toString(final InputStream input, final Charset encoding)
// 输入流 --》 字符串
String toString(final InputStream input, final String encoding)
// 字符输入流 --》 字符串
String toString(final Reader input)
// 字符数组 --》 字符串
String toString(final byte[] input, final String encoding)
//输入流 --》 字符数组
byte[] toByteArray(final InputStream input)
//输入流 --》 字符数组
byte[] toByteArray(final Reader input, final Charset encoding)
//输入流 --》 字符数组
byte[] toByteArray(final Reader input, final String encoding)
//URL   --》 字符数组
byte[] toByteArray(final URI uri)
// URL  --》 字符串
String toString(final URL url, final Charset encoding)
// URL  --》 字符串
String toString(final URL url, final String encoding)
// URLConnection --》 字符串
byte[] toByteArray(final URLConnection urlConn)
字符串读写
List<String> readLines(InputStream input)
List<String> readLines(InputStream input, final Charset encoding)
List<String> readLines(InputStream input, final String encoding)
List<String> readLines(Reader input)
void writeLines(Collection<?> lines, String lineEnding, OutputStream output)
void writeLines(Collection<?> lines, String lineEnding, OutputStream output, Charset encoding)
void writeLines(Collection<?> lines, String lineEnding, OutputStream output, final encoding)
void writeLines(Collection<?> lines, String lineEnding,Writer writer)
小例子:
public void readLinesTest(){
       try{
           InputStream is = new FileInputStream("D://test1.txt");
           List<String> lines = IOUtils.readLines(is);
           for(String line : lines){
               System.out.println(line);
           }
       } catch (FileNotFoundException e) {
           e.printStackTrace();
       } catch (IOException e) {
           e.printStackTrace();
       }
   }
结果:
hello
world
write:这个方法可以把数据写入到输出流中
write(byte[] data, OutputStream output)
write(byte[] data, Writer output)
write(byte[] data, Writer output, Charset encoding)
write(byte[] data, Writer output, String encoding)
write(char[] data, OutputStream output)
write(char[] data, OutputStream output, Charset encoding)
write(char[] data, OutputStream output, String encoding)
write(char[] data, Writer output)
write(CharSequence data, OutputStream output)
write(CharSequence data, OutputStream output, Charset encoding)
write(CharSequence data, OutputStream output, String encoding)
write(CharSequence data, Writer output)
write(StringBuffer data, OutputStream output)
write(StringBuffer data, OutputStream output, String encoding)
write(StringBuffer data, Writer output)
write(String data, OutputStream output)
write(String data, OutputStream output, Charset encoding)
write(String data, OutputStream output, String encoding)
write(String data, Writer output)
read:从一个流中读取内容
read(inputstream,byte[])
read(inputstream,byte[],offset,length) 
//offset是buffer的偏移值,length是读取的长度
read(reader,char[])
read(reader,char[],offset,length)
下例子:
public void readTest(){
      try{
          byte[] bytes = new byte[4];
          InputStream is = IOUtils.toInputStream("hello world");
          IOUtils.read(is, bytes);
          System.out.println(new String(bytes));
bytes = new byte[10];
          is = IOUtils.toInputStream("hello world");
          IOUtils.read(is, bytes, 2, 4);
          System.out.println(new String(bytes));
      } catch (IOException e) {
          e.printStackTrace();
      }
  }
readFully:这个方法会读取指定长度的流,如果读取的长度不够,就会抛出异常
readFully(inputstream,byte[])
readFully(inputstream,byte[],offset,length)
readFully(reader,charp[])
readFully(reader,char[],offset,length)
小例子:
public void readFullyTest(){
      byte[] bytes = new byte[4];
      InputStream is  = IOUtils.toInputStream("hello world");
      try {
          IOUtils.readFully(is,bytes);
          System.out.println(new String(bytes));
      } catch (IOException e) {
          e.printStackTrace();
      }
  }
输出:hell 
报出异常:
java.io.EOFException: Length to read: 20 actual: 11
    at org.apache.commons.io.IOUtils.readFully(IOUtils.java:2539)
    at org.apache.commons.io.IOUtils.readFully(IOUtils.java:2558)
    at test.java.IOUtilsTest.readFullyTest(IOUtilsTest.java:22)
    ...
contentEquals:比较两个流是否相等
contentEquals(InputStream input1, InputStream input2)
contentEquals(Reader input1, Reader input2)
contentEqualsIgnoreEOL:比较两个流,忽略换行符
contentEqualsIgnoreEOL(Reader input1, Reader input2)
skip:这个方法用于跳过指定长度的流
long skip(inputstream,skip_length)
long skip(ReadableByteChannel,skip_length)
long skip(reader,skip_length)
skipFully:这个方法类似skip,只是如果忽略的长度大于现有的长度,就会抛出异常。
skipFully(inputstream,toSkip)
skipFully(readableByteChannel,toSkip)
skipFully(inputstream,toSkip)
小例子:
public void skipFullyTest(){
    InputStream is = IOUtils.toInputStream("hello world");
    try {
        IOUtils.skipFully(is,30);
        System.out.println(IOUtils.toString(is,"utf-8"));
    } catch (IOException e) {
        e.printStackTrace();
    }
}
ineIterator:读取流,返回迭代器
LineIterator lineIterator(InputStream input, Charset encoding)
LineIterator lineIterator(InputStream input, String encoding)
LineIterator lineIterator(Reader reader)
close:关闭流
//关闭 URLConnection 
void close(final URLConnection conn)
//closeQuietly 忽略nulls和异常,关闭某个流
void closeQuietly(final Reader input)
void closeQuietly(final Writer output)
void closeQuietly(final InputStream input)
void closeQuietly(final OutputStream output)
void closeQuietly(final Socket sock)
void closeQuietly(final ServerSocket sock)
小例子1
package com.app;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.io.IOUtils;
public class A8 {
public static void main(String[] args) {
String meString = "哈哈哈哈,下班了,hello" ;
try {
InputStream inputStream = IOUtils.toInputStream( meString, "utf-8" ) ;
            String mes = IOUtils.toString( inputStream , "utf-8" ) ;
            System.out.println( mes );
} catch (IOException e) {
            e.printStackTrace();
        }
    }
}
效果:
哈哈哈哈,下班了,hello
1
小例子2 : 模拟了http 请求
package com.app;
import java.io.IOException;
import java.net.URL;
import org.apache.commons.io.IOUtils;
public class A8 {
public static void main(String[] args) {
String meString = "http://www.baidu.com" ;
try {
            //模拟了http 请求
            String mes = IOUtils.toString( new URL( meString ) , "utf-8") ;
            System.out.println( mes );
} catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Commons IO 2.5-IOUtils的更多相关文章
- apache.commons.io.IOUtils: 一个很方便的IO工具库(比如InputStream转String)
		
转换InputStream到String, 比如 //引入apache的io包 import org.apache.commons.io.IOUtils; ... ...String str = IO ...
 - Commons IO - IOUtils
		
IOUtils is a general IO stream manipulation utilities. This class provides static utility methods fo ...
 - Tomcat中使用commons-io-2.5发生的错误java.lang.ClassNotFoundException: org.apache.commons.io.IOUtils
		
关键词:IntelliJ IDEA.Tomcat.commons-io-2.5.jar.java.lang.ClassNotFoundException: org.apache.commons.io. ...
 - Commons IO方便读写文件的工具类
		
Commons IO是apache的一个开源的工具包,封装了IO操作的相关类,使用Commons IO可以很方便的读写文件,url源代码等. 普通地读取一个网页的源代码的代码可能如下 InputStr ...
 - Apache Commons IO 2.3  几点用法
		
//直接将IO流转成字符串 InputStream in = new URL( "http://jakarta.apache.org" ).openStream(); try { ...
 - Java IO流学习总结八:Commons IO 2.5-IOUtils
		
Java IO流学习总结八:Commons IO 2.5-IOUtils 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/550519 ...
 - [转]Commons IO 官方文档
		
原文地址:http://ifeve.com/commons-io/ 本文翻译自 Commons IO 官方文档 译者:MagicWolf Common IO 是一个工具库,用来帮助开发IO功能 它包括 ...
 - apache.commons.io.FileUtils的常用操作
		
至于相关jar包可以到官网获取 http://commons.apache.org/downloads/index.html package com.wz.apache.fileUtils; impo ...
 - Commons IO
		
Common IO 是一个工具库,用来帮助开发IO功能 它包括6个主要部分 Utility classes – 包括一些静态方法来执行常用任务 Input – InputStream 和 Reader ...
 
随机推荐
- (十四)Python3 字符串格式化
			
Python3 字符串格式化 字符串的格式化方法分为两种,分别为占位符(%)和format方式.占位符方式在Python2.x中用的比较广泛,随着Python3.x的使用越来越广,format方式使用 ...
 - STM32——NVIV:嵌套中断向量控制器
			
STM32有43个channel的settable的中断源:AIRC(Application Interrupt and Reset Register)寄存器中有用于指定优先级的4 bits.这4个b ...
 - 06-看图理解数据结构与算法系列(AVL树)
			
AVL树 AVL树,也称平衡二叉搜索树,AVL是其发明者姓名简写.AVL树属于树的一种,而且它也是一棵二叉搜索树,不同的是他通过一定机制能保证二叉搜索树的平衡,平衡的二叉搜索树的查询效率更高. AVL ...
 - 【转】Comet:基于 HTTP 长连接的“服务器推”技术
			
原文链接:http://www.ibm.com/developerworks/cn/web/wa-lo-comet/ 很多应用譬如监控.即时通信.即时报价系统都需要将后台发生的变化实时传送到客户端而无 ...
 - [BZOJ2667][cqoi2012]模拟工厂
			
[BZOJ2667][cqoi2012]模拟工厂 试题描述 有一个称为“模拟工厂”的游戏是这样的:在时刻0,工厂的生产力等于1.在每个时刻,你可以提高生产力或者生产商品.如果选择提高生产力,在下一个时 ...
 - hdu   1166  树状数组模板题
			
#include<stdio.h> #include<string.h> #define N 51000 int c[N],n; int number(int x) { r ...
 - poj 1752 Advertisement (差分约束)
			
题目大意:题目大意:有n个人在一条路上跑步,广告商准备在这条路上设置广告牌,假设这条路上每一个点有一个广告牌 现在已知这n个人从Ai开始跑,到Bi结束,那么他可以看到max(Ai,Bi)-min(Ai ...
 - Django:(4)Django和Ajax
			
向服务器发送请求的途径: 1. 浏览器地址栏,默认get请求 2. form表单: get请求: post请求 3. a标签,默认get请求 4. Ajax:get请求:post请求 Ajax的特点( ...
 - [bzoj2738]矩阵乘法_整体二分_树状数组
			
矩阵乘法 bzoj-2738 题目大意:给定一个$n*n$的矩阵.每次给定一个矩阵求矩阵$k$小值. 注释:$1\le n\le 500$,$1\le q\le 6\cdot 10^4$. 想法: 新 ...
 - Redis2019年3.22
			
redis缓存技术学习 一. redis基础配置 1. redis简介 1.1 redis 是c语言编写的一个缓存服务器, 是一个内存版本的nosql非关系型数据,大概11w/s访问处理. 数据都在本 ...