日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

IOUtils使用介绍

發(fā)布時(shí)間:2023/12/20 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IOUtils使用介绍 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

IOUtils使用介紹

在下面的例子,我們將詳細(xì)說(shuō)明如何使用 org.apache.commons.io 包中的 IOUtils類如何使用,通過(guò)包名我們可以知道它是 Apache Commons IO 的一部分 。該類的所有成員函數(shù)都被用來(lái)處理輸入 - 輸出流,它的確非常利于來(lái)編寫(xiě)處理此類事務(wù)的程序。IOUtils與其他Apache Commons中的類一樣,都是處理IO操作的非常重要包裝器,與手動(dòng)編寫(xiě)這些功能的其他程序相比,它們實(shí)現(xiàn)這些方法的代碼變得更小,更清晰,更易理解。

1. IOUtils類,字段和方法簡(jiǎn)介

IOUtils類的所有成員字段和方法都是靜態(tài)的,因此在標(biāo)準(zhǔn)編程中不需要?jiǎng)?chuàng)建IOUtils類的對(duì)象,而是通過(guò)類名和適當(dāng)?shù)姆椒麃?lái)使用它。如:IOUtils.method1 ()。

2. IOUtils 字段

  • static char DIR_SEPARATOR:目錄分隔符
  • static char DIR_SEPARATOR_UNIX:Unix系統(tǒng)的目錄分隔符
  • static char DIR_SEPARATOR_WINDOWS:Windows系統(tǒng)的目錄分隔符
  • static String LINE_SEPARATOR:行分隔符
  • static String LINE_SEPARATOR_UNIX:Unix系統(tǒng)的行分隔符
  • static String LINE_SEPARATOR_WINDOWS:Windows系統(tǒng)的行分隔符

3. IOUtils 方法摘要

現(xiàn)在我們將要討論的是IOUtils中的一些非常重要的方法。類中的所有處理InputStream的方法都帶有內(nèi)部的緩沖區(qū),所以我們不需要再使用 BufferedReader或者 BufferedInputStream,默認(rèn)的緩沖區(qū)大小為4K,不過(guò)我們也可以自定義它的大小。

  • static void closeQuietly(Closeable closeable):它將無(wú)條件的關(guān)閉一個(gè)可被關(guān)閉的對(duì)象而不拋出任何異常。它也有很多版本去支持關(guān)閉所有的InputStream、OutputStream、Reader和Writer。
  • static boolean contentEquals(Reader inp1,Reader inp2):這個(gè)方法將比較兩個(gè)Reader對(duì)象的內(nèi)容是否相同,相同返回true,否則返回false。它還有另外的一個(gè)版本去比較InputStream對(duì)象。還有一個(gè)方法 contentEqualsIgnoreEOL(Reader r1,Rrader r2),它將忽略行結(jié)束符而比較內(nèi)容。
  • static int copy(InputStream inp,OutputStream outp):這個(gè)方法將內(nèi)容按字節(jié)從一個(gè)InputStream對(duì)象復(fù)制到一個(gè)OutputStream對(duì)象,并返回復(fù)制的字節(jié)數(shù)。同樣有一個(gè)方法支持從Reader對(duì)象復(fù)制到Writer對(duì)象。
  • static LineIterator lineIterator(InputStream input,String enc):這個(gè)方法將從InputStream中返回一個(gè)行迭代器,我們可以指定一個(gè)字符格式(或者為空而使用默認(rèn)的)。行迭代器將持有一個(gè)打開(kāi)的InputStream的引用。當(dāng)你迭代結(jié)束后,應(yīng)當(dāng)關(guān)閉stream來(lái)釋放內(nèi)部資源。這個(gè)字符編碼也可以是一個(gè)字符集對(duì)象。同樣也有一個(gè)方法支持Reader對(duì)象。
  • 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”*創(chuàng)建一個(gè)InputStream,并返回該對(duì)象。

  • 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); }

    我們可以方便的關(guān)閉輸出流而不用拋出異常,我們打開(kāi)它的源碼看看:

    @Deprecated public static void closeQuietly(final Closeable closeable) {try {if (closeable != null) {closeable.close();}} catch (final IOException ioe) {// ignore} }

    可見(jiàn),它跟我們傳統(tǒng)的關(guān)閉輸出流是一樣的,沒(méi)什么區(qū)別,不過(guò)我們可以看見(jiàn)它已經(jīng)被廢棄了,現(xiàn)在推薦的是利用Java7引入的 try-with-resources方式來(lái)關(guān)閉。

    @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");} }

    更多關(guān)于 try-with-resources可以看 try-with-resources 和 multi-catch

  • IOUtils.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()方法有很多版本,我這里舉例的是最常用的方法,同時(shí)還有一個(gè)IOUtils.copyLarge()方法支持復(fù)制(不超過(guò)2GB)的InputStream或者Reader對(duì)象。

  • 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并返回一個(gè)byte[]。之后我們可以對(duì)該byte[]數(shù)組進(jìn)行操作。有些時(shí)候該方法非常有用,但是我們建議使用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的內(nèi)容作為字符串列表,然后對(duì)其進(jìn)行操作。

  • 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();} }

    通過(guò)lineIterator方法返回一個(gè)LineIterator對(duì)象,然后進(jìn)行迭代。

  • IOUtils.write()方法

    @Test public void test8(){try(OutputStream os=new FileOutputStream("test4.txt")){IOUtils.write("sahjsdhjad",os,"utf-8");}catch (IOException e){e.printStackTrace();} }

    我們可以通過(guò)IOUtils.write()方法將String寫(xiě)到一個(gè)Writer對(duì)象或者OutputStream對(duì)象中去。

  • 總結(jié)

    以上是生活随笔為你收集整理的IOUtils使用介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。