2013-08-11 19 views
36

A detta di tutti, alla Scala di Source è un po 'di confusione - tutto quello che ho letto su di esso menziona le risorse lasciate aperte, insetti misteriosi ...consigliato libreria Scala io

mi chiedevo se era ancora il caso nelle versioni recenti di Scala e, in tal caso, quali sono le valide alternative?

Ho più sentito parlare di scala-io e scalaz-streams (e, ovviamente, primitive di I/O Java standard). Mi sono perso qualcosa? Se qualcuno ha esperienza con questi o altri progetti, quali sono i loro pro e contro rispettivi?

Sono incline ad andare per scala-io, dal momento che ho trovato l'autore blog per essere una fonte di alta qualità di informazioni utili, ma mi piacerebbe sapere di più sulle alternative e su ciò che altre persone usano.

+0

Un'altra libreria che vale la pena dare un'occhiata è [scala-arm] (https://github.com/jsuereth/scala-arm) – Lundahl

+3

La mia regola empirica: 'Fonte' per script unici,' java.io 'per la maggior parte delle cose, iterate quando mi interessa più della correttezza o della gestione delle risorse che delle prestazioni. Sto [sperando in 'scalaz-stream'] (http://stackoverflow.com/q/18112224/334519) renderò possibile sostituire tutti e tre con un framework (e sembra [promettente] (http: // stackoverflow .com/a/18115189/334.519)). –

+1

Sono perfettamente felice di modificare questa domanda e riformularla in un modo che sia accettabile per lo stackoverflow: non vedo come: il problema con cui ho bisogno di aiuto è la mancanza di una libreria IO standard di Scala e non lo sono sicuro come chiedere su questo senza violare le linee guida di moderazione. Forse c'è un sito di stackexchange migliore per questa domanda? Sarei felice di portarlo lì se qualcuno potesse indicarmi la giusta direzione. –

risposta

6

Rapture IO potrebbe valere la pena di provare.

Fornisce un bel DSL per la gestione di risorse di I/O di vario tipo.

2

L'utilizzo del pacchetto java.nio.file nella libreria standard Java può essere anche abbastanza semplice se non si richiedono funzionalità avanzate. Per esempio, per leggere le righe di un file in memoria:

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

E per scrivere una sequenza di linee in un file:

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

check http://docs.oracle.com/javase/tutorial/essential/io/file.html per ulteriori informazioni.

Problemi correlati