S3に貯めてた画像を一括でローカルにダウンロードしたいときに
書いたもの。
短くて便利。
1 2 3 4 5 6 7 8 9 10 11 |
import sys.process.urlToProcess import java.net.URL import java.io.File val saveDir = "files/" // 保存先ディレクトリ val fileName = "filename.png" //保存ファイル名 val downloadUrl = "https://hogehoge.com/file.png" //ダウンロード先URL val f = new File(saveDir + fileName) new URL(downloadUrl) #> f !! |
ざっくり説明すると
- processのパッケージオブジェクトが
ProcessImplicits
を継承している - ProcessImplicitsには
implicit def
でjavaのクラスからscalaのSourceへの変換するための便利関数が色々定義されている - その中の
urlToProcess
で、java.net.URL
からscala.sys.process.ProcessBuilder.URLBuilder
へ暗黙的変換を行っている - プロセスの出力をFileへ保存する
#>
メソッドを呼び出し - 最後にそのプロセスの実行を開始する
!!
メソッドを呼び出し
これでURLからダウンロードされたものが、ファイルへ保存されます。
蛇足ですが同じProcessImplcitsで定義されているstringToProcess
でコマンドの実行結果とかも取れる。便利。