groovyのleftShift(<<)で文字コードを指定する
前置き
私はGroovyをプロダクトに使えるような感じではないので、ちょっとしたツール作成やら、ちょっとした作業を自動化する時に主に使っています。
こういう用途だとファイルに出力することが結構多いので、「<<」を多用している訳です。
new File("c:\\work\\output.txt") << "あうとぷっと"
通常はこれで問題ないのですが、文字コードを指定できないのでちょっと困りました。
とは言っても↓のようにsetTextメソッドを使用すれば指定できるのですが、折角なので「<<」でできないか調べてみました。
new File("c:\\work\\output.txt").setText("あうとぷっと", "UTF-8")
本題
「<<」はleftShift(Object)メソッドのショートカットなので、これをオーバーライドすればよいと。
ってことでこんなんになりました。
def path = "C:\\work\\output.txt" def output = new File(path) output.metaClass.leftShift = {Object text -> delegate.append(text, "UTF-8"); } output << "あうとぷっと"
その他
metaClassとdelegateの簡単な勉強になったかな。
metaClassとかかなり便利なのはわかってるんだけど、用途が用途なので殆ど使う事もないんですよね。
使わないと覚えないし、いざ必要な時に出てきませんし。