2013-08-11 11 views
36

Przez wszystkich kont, Scala Source jest trochę bałaganu - wszystko czytałem o tym wspomina zasoby otwarte, tajemnicze błędy ...Zalecane biblioteki Scala io

Zastanawiałem się, czy to nadal sprawa w ostatnich wersjach Scali, a jeśli tak, to jakie są godne alternatywy?

Najczęściej słyszałam o scala-io i scalaz-streams (i, oczywiście, standardowych prymitywach Java IO). Czy coś ominąłem? Jeśli ktoś ma doświadczenie z tymi lub innymi projektami, jakie są ich zalety i wady?

Jestem skłonny wybrać , ponieważ znalazłem autora blog jako źródło informacji o wysokiej jakości, ale chciałbym dowiedzieć się więcej o alternatywach i innych użytkownikach.

+0

Kolejną biblioteką wartą obejrzenia jest [scala-arm] (https://github.com/jsuereth/scala-arm) – Lundahl

+3

Moja zasada: "Źródło" dla jednorazowych skryptów, 'java.io 'dla większości rzeczy, iteracje, kiedy zależy mi bardziej na poprawności lub zarządzaniu zasobami niż wydajność. Mam nadzieję, że "scalaz-stream" (http://stackoverflow.com/q/18112224/334519) pozwoli zastąpić wszystkie trzy jedną ramką (i [wygląda obiecująco] (http: // stackoverflow .com/a/18115189/334519)). –

+1

Jestem całkowicie zadowolony z edycji tego pytania i przeformułowania go w sposób, który jest akceptowalny przez stackoverflow - po prostu nie widzę, jak: problemem, którego potrzebuję pomocy jest brak standardowej biblioteki Scala IO, a ja nie jestem na pewno pytasz o to bez naruszania wytycznych moderacji. Być może istnieje lepsza strona stackexchange tego pytania? Chętnie bym go tam zabrał, gdyby ktoś wskazał mi właściwy kierunek. –

Odpowiedz

6

Rapture IO może warto spróbować.

Zapewnia dobre DSL do zarządzania zasobami IO różnego rodzaju.

2

Korzystanie z pakietu java.nio.file w standardowej bibliotece Java może być również dość proste, jeśli nie są wymagane zaawansowane funkcje. Na przykład, aby przeczytać wiersze pliku do pamięci:

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

I napisać ciąg linii do pliku:

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

Sprawdź http://docs.oracle.com/javase/tutorial/essential/io/file.html aby uzyskać więcej informacji.

Powiązane problemy