2013-08-11 11 views
36

、ScalaのSourceは混乱のビットです - 私が読んだすべてのものは、それが開いたままにリソース、神秘的なバグを言及...推奨ScalaのIOライブラリ

私はまだケースであったかどうかを疑問に思いました。最近のScalaのバージョンでは、もしあれば、価値ある選択肢は何ですか?

私はたぶんscala-ioscalaz-streams(そして明らかに標準のJava IOプリミティブ)について聞いたことがあります。私は何かが欠けていたか?誰かがこれらのプロジェクトや他のプロジェクトの経験がある場合、それぞれの長所と短所は何ですか?

著者のblogはかなり高品質の情報源であることがわかりましたので、私はscala-ioに行く気がしますが、その代替案や他の人が使っていることについてもっと知りたいです。

+0

もう一つの価値のある図書館は[scala-arm](https://github.com/jsuereth/scala-arm) – Lundahl

+3

です。私の経験則は:一元的なスクリプトのための 'Source'、' java.ioほとんどのものでは、パフォーマンスよりも正確さやリソース管理についてもっと気にしています。私は[scalaz-stream'](http://stackoverflow.com/q/18112224/334519)が3つのフレームワークを1つのフレームワークに置き換えることを望んでいます(そしてそれは有望そうです)(http:// stackoverflow .com/a/18115189/334519))。 –

+1

私はこの質問を編集して、stackoverflowに受け入れられる方法でそれを言い換えることができてとても嬉しく思います - 私はちょっと見ていません。私が助けが必要な問題は、標準のScala IOライブラリがないことです。モデレーションガイドラインに違反することなくこれについて質問する方法を確認してください。おそらく、この質問のためのより良いスタックエクスチェンジサイトがありますか?誰かが私を正しい方向に向けることができれば、そこに持っていくのは嬉しいです。 –

答えて

6

がおすすめです。

さまざまな種類のIOリソースを管理するための優れたDSLを提供します。

2

Java標準ライブラリのパッケージjava.nio.fileを使用すると、高度な機能を必要としない場合でも十分に簡単になる場合があります。

Files.readAllLines(Paths.get("file_name"), StandardCharsets.UTF_8).asScala 

し、ファイルへの行の順序を記述するために:たとえば、メモリへのファイルの行を読み取るための詳細については、

val strs = Seq("line1", "line2", "line3") 
Files.write(Paths.get("output_file"), strs.mkString("\n").getBytes()) 

チェック http://docs.oracle.com/javase/tutorial/essential/io/file.html