初老のボケ防止日記

おっさんのひとりごとだから気にしないようにな。

OkHttpの依存ライブラリのOkioでチェックサム算出

OkHttpを使おうとして気付いたので。

今更ながらAndroidでOkHttpを使ってみようかと思っていたところ、依存ライブラリでOkioというのがあることに気付いた。

square.github.io

You'll also need Okio, which OkHttp uses for fast I/O and resizable buffers.

Android Studioだと「build.gradle」に以下を追加するだけなのでそもそも依存関係なんて解決してくれるので知らんかったぞ。

dependencies {
    compile 'com.squareup.okhttp:okhttp:2.3.0'
}

で、Okioというのはこれ。

github.com

OkHttpと同じくSquare製のI/O関連のライブラリだそうな。

speakerdeck.com

ファイルのチェックサムを求める

ソースを見たらどうもチェックサムも出してくれるみたいなので試してみた。

元のファイル

$ md5sum osa.txt
1b9be0179cfcc6a531f1eeca04c9393d  osa.txt
$ sha256sum osa.txt
1c5843df296d3901770fd28404fbc0340f7ad170dfe5ad12f25b4d15fe92024b  osa.txt

Okio使う

import okio.ByteString;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class Main {

    public static void main(String[] args) {
        
        File file = new File("osa.txt");
        try( FileInputStream input = new FileInputStream(file)) {

            ByteString byteString = ByteString.read(input, input.available());
            String md5sum = byteString.md5().hex();
            String sha256sum = byteString.sha256().hex();

            System.out.println("MD5SUM:" + md5sum);
            System.out.println("SHA256SUM:" + sha256sum);

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

実行結果はこちら

MD5SUM:1b9be0179cfcc6a531f1eeca04c9393d
SHA256SUM:1c5843df296d3901770fd28404fbc0340f7ad170dfe5ad12f25b4d15fe92024b

ダウンロードしたファイルのチェックサム判定を自前で書くのもいいんだけど、OkHttp使う場合はお手軽にできそうじゃないのよ。

その他

簡単な利用イメージはこちらにもサンプルがある。

10 things you can do with Okio's ByteString

  • OSSは便利だな

Androidオープンソースライブラリ徹底活用

Androidオープンソースライブラリ徹底活用