概述
Apache commons 包括 Apache commons-io
。它是一个实用程序库,用于帮助实现各种 IO 功能。有很多实用程序类,IOUtils
就是其中之一。在这篇文章中,我们将了解 Apache commons-io
的 IOUtils
类和其中的静态实用程序方法。
官网地址:http://commons.apache.org/proper/commons-io/
下载:http://commons.apache.org/proper/commons-io/download_io.cgi
maven
依赖
1 | <!-- https://mvnrepository.com/artifact/commons-io/commons-io --> |
常用的静态变量
在 IOUtils
中还是有很多常用的一些变量的,比如换行符等等。
1 | public static final char DIR_SEPARATOR_UNIX = '/'; |
常用方法
我将主要使用一个名为 sample-file.txt,假设其中包含以下数据。它表示学生的 id、学生姓名和总百分比。
1 | 1-Will-90 |
buffer
buffer
方法创建 Buffered Stream、Buffered Reader、Buffered Writer。
buffer(InputStream inputStream)
:接受 InputStream 并返回 BufferedInputStream。
buffer(OutputStream outputStream)
:接受 OutputStream 并返回缓冲的 OutputStream。
buffer(Reader reader)
:获取 Reader 并返回 BufferedReader。
buffer(Writer writer)
:接受 Writer 并返回 BufferedWriter。
1 | buffer(InputStream inputStream) |
例:
1 |
|
copy
这个方法可以拷贝流,算是这个工具类中使用最多的方法了。支持多种数据间的拷贝。
copy
:内部使用的其实还是 copyLarge
方法。因为 copy
能拷贝 Integer.MAX_VALUE
的字节数据,即 2^31-1
。
copyLarge
:这个方法适合拷贝较大的数据流,比如2G以上。
1 | copy(InputStream input, OutputStream output) |
例:
1 |
|
read
、readFully
、readLines
read
:从一个流中读取内容。
readFully
:这个方法会读取指定长度的流,如果读取的长度不够,就会抛出异常。
readLines
:可以从流中读取内容,并转换为 List<String>
集合。
1 | read(InputStream input, byte[] buffer) |
例:
1 |
|
skip
和 skipFully
skip
:跳过指定长度的流。
skipFully
:这个方法类似 skip,只是如果忽略的长度大于现有的长度,就会抛出异常。
1 | skip(InputStream input, long toSkip) |
例:
1 |
|
toBufferedInputStream
和 toBufferedReader
toBufferedInputStream
:把字节输入流的全部内容放在另一个输入流中。
toBufferedReader
:返回缓存字符输入流。
1 | toBufferedInputStream(InputStream input) |
toByteArray
toByteArray
:返回字节数组。
1 | toByteArray(InputStream input) |
例:
1 |
|
toCharArray
toCharArray
:返回字符数组。
1 | toCharArray(InputStream is) |
例:
1 |
|
toInputStream
toInputStream
:返回字节输入流。
1 | toInputStream(CharSequence input) |
例:
1 |
|
toString
toString
:返回字符串。
1 | toString(byte[] input) |
例:
1 |
|
write
、writeChunked
、writeLines
write
:把数据写入到输出流中。
writeChunked
:把字节或者字符数组,用分块写入的方式,写入到另一个输出流。
writeLines
:把 List
1 | write(byte[] data, OutputStream output) |
例:
1 |
|
lineIterator
lineIterator
:读取流,返回迭代器。
1 | lineIterator(InputStream input, Charset charset) |
contentEquals
和 contentEqualsIgnoreEOL
contentEquals
:比较两个输入流。
contentEqualsIgnoreEOL
:比较两个流,忽略换行符。
1 | contentEquals(InputStream input1, InputStream input2) |
close
和 closeQuietly
close
:关闭 URL 连接。
closeQuietly
:忽略 null 和异常,关闭某个流。
1 | close(URLConnection conn) |
If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !