use
를 사용하여 리소스를 닫아라
#
java 의 try-with-resources 와 동일한 기능이겠다.
코틀린에서는 java의 try-with-resources 와 같은 기능으로 use
, useLines
등을 사용할 수 있다.
모든 Closable 객체에 사용할 수 있다.
fun countCharactersInFile(path: String): Int {
val reader = BufferedReader(FileReader(path))
reader.use {
return reader.lineSequence().sumBy { it.length }
}
}
fun countCharactersInFile(path: String): Int {
BufferedReader(FileReader(path)).use {
return reader.lineSequence().sumBy { it.length }
}
}
fun countCharactersInFile(path: String): Int {
File(path).useLines { lines ->
return lines.sumBy { it. length }
}
}
useLines
(파일을 한 줄씩 처리)의 경우 메모리에 파일의 내용을 한 줄씩만 유지하므로, 대용량 파일도 적절하게 처리할 수 있다. 다만 파일의 줄을 한 번만 사용할 수 있다는 단점이 있다.
요약 #
use
를 사용하여 Closeable/AutoCloseable 을 구현한 모든 객체를 쉽고 안전하게 처리할 수 있다.- 파일을 처리할 때 파일을 한 줄씩 읽어 들이는
useLines
를 사용하는 것이 좋다.