まとめメモ
- 一番良いのは File をそのまま使用すること。
File (Groovy JDK enhancements) - Stream か Reader・Writer を使う必要に迫られたら、まず Reader・Writer を使うことを検討する(テキストなので)。
Grails 使用でのアップロード時
Grails でファイルアップロード時は、MultipartFile (Spring Framework 5.0.2.RELEASE API) で受け取ることになる。
そのままアップロードしたファイルをサーバに保存しないならば、getInputStream メソッドを使用して InputStream からテキストファイルを読み込む。
参考
Grails 使用でのダウンロード時
例えばウェブブラウザ画面で「ダウンロード」ボタンを押して CSV ファイルをダウンロードするような場合。
バイト配列 byte[] を response.outputStream に追加してやることで可能。
byte[] を得るためには、StringWriter の toString() を使用して文字列を取得し、それを getBytes() すれば良い。
getBytes() するときに引数に文字コードを渡してやれば、文字コードを指定したのダウンロードも可能。
StringWriter writer = new StringWriter() // writer にいろいろ文字列情報を追加する byte[] bytes = writer.toString().getBytes("Shift_JIS") // コントローラで次のようにしてダウンロード response.outputStream << bytes
おわりに
Java の Stream や Reader、Writer がわけわからず、とても悩んでしまいました><。
OrangeSignal CSV – Java CSV ライブラリ を使用して、Grails で作ったウェブページから CSV ファイルをダウンロードしようとしたとき、どうやって byte[] にしたらよいかわかりませんでした><。
結果として StringWriter の toString、次いで getBytes すればできました。
少しずつ解ってきましたので、雑でもと思い、メモを残しました。
以上です。