Java IO流學(xué)習(xí)總結(jié)八:Commons IO 2.5-IOUtils
轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/zhaoyanjun6/article/details/55051917
本文出自【趙彥軍的博客】
在上一篇文章中,介紹了IO FileUtils的常規(guī)用法,今天介紹IOUtils的使用。
福利
另外我已經(jīng)把Commons IO 2.5的源碼發(fā)布到Jcenter,大家就不用下載jar包了,可以直接引用。
<dependency><groupId>org.apache.commons.io
</groupId><artifactId>commonsIO
</artifactId><version>2.5.0
</version><type>pom
</type>
</dependency>
compile
'org.apache.commons.io:commonsIO:2.5.0'
IOUtils流操作的相關(guān)方法
- copy:這個方法可以拷貝流,算是這個工具類中使用最多的方法了。支持多種數(shù)據(jù)間的拷貝。copy內(nèi)部使用的其實還是copyLarge方法。因為copy能拷貝Integer.MAX_VALUE的字節(jié)數(shù)據(jù),即2^31-1。
copy(inputstream,outputstream)
copy(inputstream,writer)
copy(inputstream,writer,encoding)
copy(reader,outputstream)
copy(reader,writer)
copy(reader,writer,encoding)
- copyLarge:這個方法適合拷貝較大的數(shù)據(jù)流,比如2G以上。
copyLarge(reader,writer) 默認(rèn)會用1024*4的buffer來讀取
copyLarge(reader,writer,buffer)
InputStream toInputStream(
final String input,
final Charset encoding)InputStream toInputStream(
final String input,
final String encoding)
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)
byte[] toByteArray(
final URI uri)
String toString(
final URL url,
final Charset encoding)
String toString(
final URL url,
final String encoding)
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();}}
結(jié)果:
hello
world
- write:這個方法可以把數(shù)據(jù)寫入到輸出流中
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(inputstream,
byte[])
read(inputstream,
byte[],
offset,
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:
11at 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(InputStream input1, InputStream input2)
contentEquals(Reader input1, Reader input2)
- contentEqualsIgnoreEOL:比較兩個流,忽略換行符
contentEqualsIgnoreEOL(Reader input1, Reader input2)
long skip(inputstream,skip_length)
long skip(ReadableByteChannel,skip_length)
long skip(reader,skip_length)
- skipFully:這個方法類似skip,只是如果忽略的長度大于現(xiàn)有的長度,就會拋出異常。
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();}
}
LineIterator lineIterator(
InputStream input, Charset encoding)
LineIterator lineIterator(
InputStream input,
String encoding)
LineIterator lineIterator(Reader reader)
void close(
final URLConnection conn)
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)
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
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 {String mes = IOUtils.toString(
new URL( meString ) ,
"utf-8") ;System.out.println( mes );}
catch (IOException e) {e.printStackTrace();}}
}
運行結(jié)果:
個人微信號:zhaoyanjun125 , 歡迎關(guān)注
總結(jié)
以上是生活随笔為你收集整理的Java IO流学习总结八:Commons IO 2.5-IOUtils的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。