Android IO簡化之Okio庫

Android IO簡化之Okio庫

概要

? 如果之前有使用過Okhttp,那么你一定知道底層的IO讀取是由square公司開發(fā)的Okio庫。它補充了Java.io和java.nio的不足,以便能夠更加方便,快速的訪問、存儲和處理你的數據。而在一般的開發(fā)中,我們也可以使用Okio來做IO讀寫,非常方便深得我心。

核心概念

? 在日常的開發(fā)過程中,Okio的使用非常方便,在于相比java.io庫它簡化了很多繁雜而且我們平時又使用不到的東西。這其中最核心的兩個類便是 Sink, Source。Source可以簡單的理解為InputStream 而Sink則對應為OutPutStream。這兩個接口都繼承Closeable接口,所以在使用結束我們可以當做正常的IO關閉。

Okio工程結構
  • Sink

    它有一子類接口 BufferedSink,BufferedSink的實現類為RealBufferedSink。BufferedSink中定義了一系列寫入緩存區(qū)的方法,比如write方法寫byte數組,writeUtf8寫字符串,還有一些列的writeByte,writeString,writeShort,writeInt,writeLong,writeDecimalLong等等方法;

  • Source

    它有一子類接口 BufferedSource。 BufferedSource的實現類為RealBufferedSource,BufferedSource中定義了一系列讀取方法,對應上面的寫入方法read方法寫byte數組,readUtf8寫字符串。

兩個支持緩沖區(qū)的接口的實現類RealBufferedSink和RealBufferedSource都是通過包裝一個Sink+Buffer或者Source+Buffer來進行實現的。

說了這么多,直接上代碼吧。所有的IO操作,核心代碼就只有兩行。

示例代碼1 如何讀取數據

        BufferedSource bufferedSource = null;
        try {
            File file = new File("txt");
            bufferedSource = Okio.buffer(Okio.source(file));
            String content = bufferedSource.readUtf8();
            System.out.println(content);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            closeQuietly(bufferedSource);
        }

實例代碼2 如何寫入數據

 BufferedSink bufferedSink = null;
        try {
            File file = new File("txt");
            bufferedSink = Okio.buffer(Okio.Sink(file));
            bufferedSink.writeUtf8("i am zhangsan");
        } catch (Exception e) {
        } finally {
            closeQuietly(bufferedSink);
        }

實例代碼3 如何追加文件內容

 BufferedSink bufferedSink = null;
        try {
            File file = new File("txt");
            bufferedSink = Okio.buffer(Okio.appendSink(file));
            bufferedSink.writeUtf8("i am zhengyan");
        } catch (Exception e) {
        } finally {
            closeQuietly(bufferedSink);
        }

最后

我自己在嘗試用了再也不想看到Java.io這么臃腫的庫,上面展示了比較簡單的IO操作,當然Okio還能做的更多。如果你仔細留意會發(fā)現我們用的最多的BufferedSink BufferedSource里面都會存在一個Buffer類來支持這緩沖區(qū),我將在下章講解Buffered類在Okio是如何工作原理的,以及Okio的一些源碼分析,謝謝大家閱讀。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容