2013-08-11 59 views
36

Bằng tất cả tài khoản, Scala của Source là một chút của một mớ hỗn độn - tất cả mọi thứ tôi đã đọc về nó đề cập đến các nguồn lực còn bỏ ngỏ, lỗi bí ẩn ...đề nghị thư viện Scala io

tôi đã tự hỏi cho dù đó vẫn là trường hợp trong các phiên bản gần đây của Scala và, nếu có, lựa chọn thay thế xứng đáng là gì?

Tôi hầu như đã nghe nói về scala-ioscalaz-streams (và rõ ràng là các chuẩn Java IO chuẩn). Tôi đã bỏ lỡ bất cứ điều gì? Nếu bất cứ ai có kinh nghiệm với các dự án này hoặc các dự án khác, ưu và nhược điểm của họ là gì?

Tôi có xu hướng đi theo số scala-io, vì tôi thấy tác giả của tác giả là blog là nguồn thông tin hữu ích khá cao, nhưng tôi muốn biết thêm về các lựa chọn thay thế và những gì người khác sử dụng.

+0

Một thư viện đáng xem khác là [scala-arm] (https://github.com/jsuereth/scala-arm) – Lundahl

+3

Quy tắc chung của tôi: 'Source' cho tập lệnh một lần,' java.io 'cho hầu hết mọi thứ, lặp lại khi tôi quan tâm nhiều hơn về tính đúng đắn hoặc quản lý tài nguyên hơn hiệu suất. Tôi [hy vọng 'scalaz-stream'] (http://stackoverflow.com/q/18112224/334519) sẽ làm cho nó có thể thay thế cả ba với một khung công tác (và nó có vẻ hứa hẹn] (http: // stackoverflow .com/a/18115189/334519)). –

+1

Tôi hoàn toàn vui khi chỉnh sửa câu hỏi này và nói lại nó theo cách có thể chấp nhận được đối với stackoverflow - Tôi chỉ không thấy cách: vấn đề tôi cần trợ giúp là thiếu thư viện chuẩn Scala IO và tôi không chắc chắn cách hỏi về điều này mà không vi phạm nguyên tắc kiểm duyệt. Có lẽ có một trang web stackexchange tốt hơn cho câu hỏi này? Tôi rất vui khi mang nó đến đó nếu ai đó có thể chỉ cho tôi đi đúng hướng. –

Trả lời

6

Rapture IO có thể đáng để thử.

Nó cung cấp một số DSL tốt đẹp để quản lý tài nguyên IO của các loại khác nhau.

2

Sử dụng gói java.nio.file trong thư viện chuẩn Java cũng có thể đủ đơn giản nếu bạn không yêu cầu các tính năng nâng cao. Ví dụ, để đọc những dòng của một tập tin vào bộ nhớ:

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

Và để viết một chuỗi các dòng vào một tập tin:

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

Kiểm tra http://docs.oracle.com/javase/tutorial/essential/io/file.html để biết thêm thông tin.

Các vấn đề liên quan