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

转载于:https://www.cnblogs.com/sharpest/p/9952423.html

Commons IO 2.5-IOUtils相关推荐

  1. 使用org.apache.commons.io.FileUtils,IOUtils工具类操作文件

    转载自 使用org.apache.commons.io.FileUtils,IOUtils;工具类操作文件 File src = new File("G:/2012/portal/login ...

  2. Commons IO -- IOUtils

    IOUtils 是 apache 基金会下面的一个子项目,提供了对于 IO 流操作的进一步封装,让我们可以更加方便的对 IO 流进行操作. IOUtils的下载地址是: http://commons. ...

  3. Commons IO

    Common IO 是一个工具库,用来帮助开发IO功能 它包括6个主要部分 Utility classes – 包括一些静态方法来执行常用任务 Input – InputStream 和 Reader ...

  4. Java IO流学习总结八:Commons IO 2.5-IOUtils

    Java IO流学习总结八:Commons IO 2.5-IOUtils 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/550519 ...

  5. Commons IO方便读写文件的工具类

    Commons IO是apache的一个开源的工具包,封装了IO操作的相关类,使用Commons IO可以很方便的读写文件,url源代码等. 普通地读取一个网页的源代码的代码可能如下 InputStr ...

  6. <Java>使用commons.io修改文件内容(中文标点符号改成英文)

    一.前言 今天整理笔记,发生笔记中很多代码和笔记的标点符号是中文符号,所以写了个很简单的代码实现中文标点符号改成英文标点符号,读写文件涉及到io流,传统io流使用起来不是很方便,代码量多,难记!(赶时 ...

  7. [转]Apache Commons IO入门教程

    Apache Commons IO是Apache基金会创建并维护的Java函数库.它提供了许多类使得开发者的常见任务变得简单,同时减少重复(boiler-plate)代码,这些代码可能遍布于每个独立的 ...

  8. Java IO流学习总结七:Commons IO 2.5-FileUtils

    Java IO流学习总结七:Commons IO 2.5-FileUtils 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/5497 ...

  9. java.lang.NoClassDefFoundError:org/apache/commons/io/Charsets (jsoup配合htmlunit 爬取异步加载的网页遇到的)

    最近用jsoup配合htmlunit 爬取异步加载的网页运行代码的时候,报错java.lang.NoClassDefFoundError:org/apache/commons/io/Charsets ...

最新文章

  1. visual studio 自动整理代码
  2. 如何利用PopupWindow实现弹出菜单并解决焦点获取以及与软键盘冲突问题
  3. JQuery 源码解析资料
  4. 队列判空_三分钟基础:什么是队列?
  5. python三引号解析_[宜配屋]听图阁
  6. RedHat5 升级OpenSSH服务
  7. python 自动复制分类_leetcode python 常见分类问题模板(复制粘贴就能用) 更新中......
  8. 学习linux—— 磁盘相关指令
  9. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_08 转换流_4_OutputStreamWriter介绍代码实现...
  10. Nginx系列(5):Web服务器分析之Linux I/O(理论中)
  11. echarts 世界地图标点_echarts中国地图3D各个城市标点demo
  12. 【190320】VC++ 机器人语音控制系统源代码
  13. Word文档标题“多级编号”设置(用于处理 文档二级标题不跟随一级标题序号编号,如 本应该为2.1 结果为1.1)
  14. 被巨头“封杀”后,中国移动互联网企业如何加速出海
  15. 奇迹mu在服务器运行,奇迹mu 服务端的常用端口及功能
  16. 武汉软件工程职业学院计算机分数线,武汉软件工程职业学院录取分数线2021是多少分(附历年录取分数线)...
  17. CITA Release v0.18
  18. Spring Boot配置(一)
  19. 厦门市委书记走访图扑等多家软件企业调研元宇宙产业发展情况
  20. Transformer课程 第7课Gavin大咖 BERT文本分类-BERT Fine-Tuning

热门文章

  1. angular发布代码有缓存_如何在Angular应用程序中执行请求?
  2. 怎么在html中加横条,如何在HTML中插入一行?html横线标签hr全新讲解
  3. html target=_blank 弹出独立窗口,HTML base 标签的 target 属性 —— base target=_blank /...
  4. mysql数据库 性别 优化_BATJ解决千万级别数据之MySQL 的 SQL 优化大总结
  5. linux下文件下载中文,LINUX环境下资源下载中文目录及中文文件名称问题
  6. 2接口详解_冯博琴微型计算机原理与接口技术第3版答案资料配套题库名校考研真题课后习题章节题库模拟试题...
  7. 护壁桩嵌入深度_钻孔灌注桩嵌岩深度最少多少
  8. wordpress php 链接,简介WordPress中用于获取首页和站点链接的PHP函数_PHP
  9. MATLAB基本运算
  10. R语言生信作图代码集合大全