IOUtils使用介绍
IOUtils使用介绍
在下面的例子,我们将详细说明如何使用 org.apache.commons.io
包中的 IOUtils
类如何使用,通过包名我们可以知道它是 Apache Commons IO 的一部分 。该类的所有成员函数都被用来处理输入 - 输出流,它的确非常利于来编写处理此类事务的程序。IOUtils
与其他Apache Commons中的类一样,都是处理IO操作的非常重要包装器,与手动编写这些功能的其他程序相比,它们实现这些方法的代码变得更小,更清晰,更易理解。
1. IOUtils类,字段和方法简介
IOUtils类的所有成员字段和方法都是静态的,因此在标准编程中不需要创建IOUtils类的对象,而是通过类名和适当的方法名来使用它。如:IOUtils.method1 ()
。
2. IOUtils 字段
static char DIR_SEPARATOR
:目录分隔符static char DIR_SEPARATOR_UNIX
:Unix系统的目录分隔符static char DIR_SEPARATOR_WINDOWS
:Windows系统的目录分隔符static String LINE_SEPARATOR
:行分隔符static String LINE_SEPARATOR_UNIX
:Unix系统的行分隔符static String LINE_SEPARATOR_WINDOWS
:Windows系统的行分隔符
3. IOUtils 方法摘要
现在我们将要讨论的是IOUtils中的一些非常重要的方法。类中的所有处理InputStream的方法都带有内部的缓冲区,所以我们不需要再使用 BufferedReader
或者 BufferedInputStream
,默认的缓冲区大小为4K,不过我们也可以自定义它的大小。
static void closeQuietly(Closeable closeable)
:它将无条件的关闭一个可被关闭的对象而不抛出任何异常。它也有很多版本去支持关闭所有的InputStream、OutputStream、Reader和Writer。static boolean contentEquals(Reader inp1,Reader inp2)
:这个方法将比较两个Reader对象的内容是否相同,相同返回true,否则返回false。它还有另外的一个版本去比较InputStream对象。还有一个方法contentEqualsIgnoreEOL(Reader r1,Rrader r2)
,它将忽略行结束符而比较内容。static int copy(InputStream inp,OutputStream outp)
:这个方法将内容按字节从一个InputStream对象复制到一个OutputStream对象,并返回复制的字节数。同样有一个方法支持从Reader对象复制到Writer对象。static LineIterator lineIterator(InputStream input,String enc)
:这个方法将从InputStream中返回一个行迭代器,我们可以指定一个字符格式(或者为空而使用默认的)。行迭代器将持有一个打开的InputStream的引用。当你迭代结束后,应当关闭stream来释放内部资源。这个字符编码也可以是一个字符集对象。同样也有一个方法支持Reader对象。static List<String> readLines(InputStream inp,String enc)
static List<String> readLines(Reader inp)
static BufferedReader toBufferedReader(Reader rdr, int size)
static InputStream toInputStream(CharSequence inp, String enc)
static String toString(Reader inp)
static void write(String data,Writer outp)
static void writeLines(Collection<?> lines,String lineEnding,Writer outp)
4. 方法使用
IOUtils.toInputStream()
方法InputStream is=IOUtils.toInputStream("This is a String","utf-8");
IOUtils.toInputStream()
方法为*“This is a String”*创建一个InputStream,并返回该对象。IOUtils.closeQuietly()
方法public void test2() throws IOException {InputStream is=IOUtils.toInputStream("This is a String","utf-8");OutputStream os=new FileOutputStream("test2.txt");int bytes=IOUtils.copy(is,os);System.out.println("File Written with "+bytes+" bytes");IOUtils.closeQuietly(os); }
我们可以方便的关闭输出流而不用抛出异常,我们打开它的源码看看:
@Deprecated public static void closeQuietly(final Closeable closeable) {try {if (closeable != null) {closeable.close();}} catch (final IOException ioe) {// ignore} }
可见,它跟我们传统的关闭输出流是一样的,没什么区别,不过我们可以看见它已经被废弃了,现在推荐的是利用Java7引入的
try-with-resources
方式来关闭。@Test public void test2() throws IOException {try (InputStream is = IOUtils.toInputStream("This is a String", "utf-8");OutputStream os = new FileOutputStream("test2.txt")) {int bytes = IOUtils.copy(is, os);System.out.println("File Written with " + bytes + " bytes");} }
更多关于
try-with-resources
可以看 try-with-resources 和 multi-catchIOUtils.copy()
方法public void test2() throws IOException {try (InputStream is = IOUtils.toInputStream("This is a String", "utf-8");OutputStream os = new FileOutputStream("test2.txt")) {int bytes = IOUtils.copy(is, os);System.out.println("File Written with " + bytes + " bytes");} }
IOUtils.copy()
方法有很多版本,我这里举例的是最常用的方法,同时还有一个IOUtils.copyLarge()
方法支持复制(不超过2GB)的InputStream或者Reader对象。IOUtils.toString()
方法FileReader fileReader = new FileReader("test2.txt")); System.out.println(IOUtils.toString(fileReader));
和上面所看到的toString方法类似,IOUtils有支持
InputStream
、URI
和URL
的方法,它们都需要指定字符集。IOUtils.read()
方法@Test public void test4(){try(FileInputStream fin=new FileInputStream("test2.txt")){byte[] buf= new byte[100];int len=IOUtils.read(fin,buf);System.out.println("The Length of Input Stream:"+len);}catch (IOException e){e.printStackTrace();} }
该方法从InputStream中读取bytes并返回一个
byte[]
。之后我们可以对该byte[]数组进行操作。有些时候该方法非常有用,但是我们建议使用readlines()方法。IOUtils.writeLines()
方法@Test public void test5() {try (FileInputStream fin = new FileInputStream("test2.txt")) {List ls = IOUtils.readLines(fin, "utf-8");for (int i = 0; i < ls.size(); i++) {System.out.println(ls.get(i));}} catch (IOException e) {e.printStackTrace();} }
我们可以将InputStream的内容作为字符串列表,然后对其进行操作。
IOUtils.writeLines()
方法@Test public void test6(){List<String> ls=new ArrayList<>();ls.add("asdasd");ls.add("ada21");ls.add("addsf");try(OutputStream os=new FileOutputStream("test3.txt")) {IOUtils.writeLines(ls,IOUtils.LINE_SEPARATOR_WINDOWS,os);} catch (IOException e) {e.printStackTrace();} }
LineIterator
类和lineIterator()
方法@Test public void test7(){try(FileInputStream fin=new FileInputStream("test2.txt")){LineIterator lt=IOUtils.lineIterator(fin,"utf-8");while (lt.hasNext()){String line=lt.nextLine();System.out.println(line);}}catch (IOException e){e.printStackTrace();} }
通过
lineIterator
方法返回一个LineIterator
对象,然后进行迭代。IOUtils.write()
方法@Test public void test8(){try(OutputStream os=new FileOutputStream("test4.txt")){IOUtils.write("sahjsdhjad",os,"utf-8");}catch (IOException e){e.printStackTrace();} }
我们可以通过IOUtils.write()方法将String写到一个Writer对象或者OutputStream对象中去。
IOUtils使用介绍相关推荐
- Map Join介绍及案例
Map Join介绍及案例 Map Join介绍 1. 使用场景 2. 优点 3. 实现方法 Map Join案例 1. 需求 (1)需求说明 (2)文件 2.案例分析 (1)需求分析 (2)输入数据 ...
- day17(JDBC入门jdbcUtils工具介绍)
day17 JDBC整体思维导图 JDBC入门 导jar包:驱动! 加载驱动类:Class.forName("类名"); 给出url.username.password,其中url ...
- GridFsTemplate介绍以及基本使用
本文来说下MongoDB中的GridFsTemplate介绍以及基本使用 文章目录 GridFsTemplate概述 利用mongodb保存图片/文件/视频两种方式 bson二进制简介 GridFS简 ...
- MapReduce的API介绍
MapReduce自带的InputFormat介绍: SwquenceFile文件,<K,V>形式的二进制文件: package squencefile;import org.apache ...
- 问卷星 php,问卷星API介绍
问卷星API介绍: ⼀一.填写问卷时传递参数(如,⽤用户ID) 通过使⽤用⾃自定义链接可以通过在问卷链接中传递参数(如,您系统中 的⽤用户ID)到问卷中,并保存在问卷数据中.同时在填写完成问卷后 访问 ...
- JavaWeb框架(一):Web入门,Http的请求和响应,https介绍,Web实战自定义服务器
Servlet入门 MVC实战项目 仓储管理系统 JavaWeb入门介绍 Http协议 Http请求数据格式 Http响应数据格式 Web实战Demo:自定义服务器 对比Https协议 总结 Redi ...
- JAVA大数据(二) Hadoop 分布式文件系统HDFS 架构,MapReduce介绍,Yarn资源调度
文章目录 1.分布式文件系统HDFS 1.HDFS的来源 2.HDFS的架构图之基础架构 2.1 master/slave 架构 2.2 名字空间(NameSpace) 2.3 文件操作 2.4副本机 ...
- Apache Commons 工具类介绍及简单使用(转)
转自:http://www.cnblogs.com/younggun/p/3247261.html Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下 ...
- spring 略介绍
第一章 Spring 入门 1.1为什么要学spring spring是java语言中必须要掌握的框架,它涵盖了java的各个领域,基本上是全能的. spring的核心是依赖注入(DI),spring ...
- Apache Commons 工具类介绍及简单使用
Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下面是我这几年做开发过程中自己用过的工具类做简单介绍. 组件 功能介绍 BeanUtils 提供了对于 ...
最新文章
- java并发性是指什么_java – 什么是“非阻塞”并发,它与普通并发性有什么不同?...
- java怎么解决重复支付问题_支付系统设计中,如何防止重复支付?
- 音视频技术开发周刊 | 200
- Android开发之通过反射获取全局的application
- G - 变形课 HDU - 1181(搜索之dfs)
- android开发(13) 尝试在流布局中移动控件
- 泰山医学院计算机文化基础,泰医 专 计算机 16级.pdf
- 还是畅通工程(克鲁斯卡尔算法+并查集)
- git clone出现fatal: HTTP request failed --git版本问题
- 莞工计算机学院杀手,莞工oj第40题神奇的fans
- Silvaco仿真入门
- 服务器装无线上网卡,dlink无线上网卡怎么安装和设置
- 聊一聊为什么JAVA只允许单继承
- (附源码课件)10款Java小游戏满足你各种需求
- python计算一个三位数个位数之和
- [K/3Cloud]关于选单操作
- stata两种方法制作限制立方条图
- Android琐碎知识点,不断更新中
- 进程管理(二十二)—CFS调度器
- BZOJ1972:[SDOI2010]猪国杀
热门文章
- Centos 7.9系统安装网卡驱动
- 2020年中国洪涝受灾人口数、死亡失踪人口数、倒塌房屋数量及造成的直接经济损失分析[图]
- 《算法导论》+第四版++答案
- 在mac11以上系统可用的cocosbuilder3.0,12也可用。
- 频谱分析仪查看时域波形
- nandflash驱动详解
- java 下载excel到本地_java已知下载链接将Excel文件利用httpclient下载到本地
- 修改tomcat服务器图标,如何修改tomcat项目的图标(两种)
- Linux下数据库可视化软件推荐
- 在线购物系统后台登录界面html代码,电子商城(购物网站)html模板源码