はじめに
ファイルの内容が同じだったら同じ値を返し、ファイルの内容が違ったら違う値を返す関数が必要でした。
ぐぐってみると、意外と見つかりません。そういうときはJavaに聞けです。
ファイルのメッセージダイジェストを計算する。 - うなの日記を見つけました。Javaのコードです。
このコードをScalaのコードに書き換えられれば、欲しい関数が手に入るということです。素晴らしい!
varはご法度
Scalaではvarはご法度です。
「なんでvarはご法度なの?」とか、そういうデリカシーに欠けることは誰も口にしません。
けど、今回はvarのことも考えました。
ぐぐってみると、いつもの灰色のサイトに辿り着きます。
今回はこちらです。
[リンク先](Iterator.continually()を使おう - kmizuの日記)も要チェックです。
確認方法
md5やsha-256であれば、ターミナルを使って確認できます。
$ md5 tokyo.png
$ shasum -a 256 tokyo.png
念のため、確認用の画像も用意しました。
準備万端
あとは実装して、確認するだけです。
あとがき
実装してみて辛かったことはターミナルで確認したハッシュ値と一致しなかったことです。
を使うとターミナルのハッシュ値と一致しませんでしたが、
val bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream("tokyo.png")))
を使うとターミナルのハッシュ値と一致するようになりました。
val fileInputStream = new FileInputStream("tokyo.png")
しばらくしたら書き換えたScalaのコードを貼る予定です
こちらに書き換えたScalaのコードを用意しました