This repository has been archived by the owner on Jan 18, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 13
Jong Wook Kim edited this page Feb 2, 2017
·
1 revision
디렉터리를 탐색할 수 있는 도구입니다. Stream[Path]
형태의 리턴타입을 가지며 lazy하게 파일시스템을 탐색하기 때문에 필요한 만큼만 처리하기에 효율적입니다. 예를 들어 다음 코드는 전체 파일시스템 트리를 탐색하지 않고도 10개의 경로를 출력합니다.
import com.kakao.mango.io.FileSystems
import java.nio.file.Path
val entries: Stream[Path] = FileSystems.entries("/")
entries.take(10).foreach(println)
zip 또는 jar 형태의 압축파일의 안에 있는 파일들을 탐색할 수 있는 도구입니다.
import com.kakao.mango.io._
val jar = new JarInputStream(new FileInputStream("example.jar"))
val entries: Stream[JarEntry] = JarStreams.entries(jar)
JarStream은 "META-INF" 디렉터리에 있는 파일을 무시하도록 만들어져 있습니다.
Java 7에서 도입된 try-with-resources와 유사한 문법으로 InputStream
등 해제해야 하는 리소스를 편하게 사용할 수 있습니다. 다음과 같이 1개 또는 여러 개의 AutoCloseable
리소스를 인자로 주고 이어서 클로져로 로직을 작성하면, finally
구문을 통해 예외가 발생하거나 리소스가 null일 때의 처리를 내부적으로 해 주어서 코드가 간결해집니다.
AutoClosing (
new URL("http://kin.naver.com/robots.txt").openStream()
) { input =>
ByteStreams.copy(input, System.out)
}
AutoClosing (
new URL("http://kin.naver.com/robots.txt").openStream(),
new URL("http://tip.daum.net/robots.txt").openStream()
) { case (input1, input2) =>
ByteStreams.copy(input1, System.out)
ByteStreams.copy(input2, System.out)
}