轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/55051917
本文出自【趙彥軍的博客】java
在上一篇文章中,介紹了IO FileUtils的常規用法,今天介紹IOUtils
的使用。apache
另外我已經把Commons IO 2.5
的源碼發佈到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
流操做的相關方法copy(inputstream,outputstream) copy(inputstream,writer) copy(inputstream,writer,encoding) copy(reader,outputstream) copy(reader,writer) copy(reader,writer,encoding)
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(); } }
結果:app
hello world
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) //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(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
報出異常:ui
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(InputStream input1, InputStream input2) contentEquals(Reader input1, Reader input2)
contentEqualsIgnoreEOL(Reader input1, Reader input2)
long skip(inputstream,skip_length) long skip(ReadableByteChannel,skip_length) long skip(reader,skip_length)
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)
//關閉 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)
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(); } } }
效果:url
哈哈哈哈,下班了,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 { //模擬了http 請求 String mes = IOUtils.toString( new URL( meString ) , "utf-8") ; System.out.println( mes ); } catch (IOException e) { e.printStackTrace(); } } }
運行結果:
我的微信號:zhaoyanjun125
, 歡迎關注