Kotlin 파일 입출력 (File I/O in Kotlin)
Kotlin에서는 파일을 읽고 쓰기 위해 Java의 표준 라이브러리를 사용할 수 있습니다. 파일 입출력은 주로 java.io 패키지의 클래스를 통해 수행되며, Kotlin의 확장 함수와 함께 사용하면 더욱 편리하게 처리할 수 있습니다.
파일 읽기 (Reading from a File)
파일을 읽는 방법에는 여러 가지가 있습니다. 가장 기본적인 방법은 BufferedReader를 사용하는 것입니다. 또한, Kotlin의 File 클래스를 사용하면 파일을 읽는 작업이 더 간단해집니다.
BufferedReader를 사용한 파일 읽기 예제:
import java.io.File
import java.io.BufferedReader
fun readFile(fileName: String) {
val file = File(fileName)
if (file.exists()) {
val bufferedReader: BufferedReader = file.bufferedReader()
val text: List<String> = bufferedReader.readLines()
text.forEach { println(it) }
} else {
println("파일이 존재하지 않습니다.")
}
}
fun main() {
readFile("example.txt")
}
위 코드에서 readFile 함수는 파일 이름을 인수로 받아 파일을 읽고, 각 줄을 출력합니다. 파일이 존재하지 않을 경우 적절한 메시지를 출력합니다.
Kotlin의 확장 함수를 사용한 파일 읽기 예제:
import java.io.File
fun main() {
val fileName = "example.txt"
val file = File(fileName)
if (file.exists()) {
val text = file.readText()
println(text)
} else {
println("파일이 존재하지 않습니다.")
}
}
위 코드에서 readText() 확장 함수를 사용하여 파일의 모든 내용을 한 번에 읽고 출력합니다.
파일 쓰기 (Writing to a File)
파일에 데이터를 쓰는 방법도 여러 가지가 있습니다. BufferedWriter를 사용하는 방법과 Kotlin의 File 클래스의 확장 함수를 사용하는 방법이 있습니다.
BufferedWriter를 사용한 파일 쓰기 예제:
import java.io.File
import java.io.BufferedWriter
fun writeFile(fileName: String, text: String) {
val file = File(fileName)
val bufferedWriter: BufferedWriter = file.bufferedWriter()
bufferedWriter.use { out ->
out.write(text)
}
}
fun main() {
val text = "Hello, Kotlin File I/O!"
writeFile("example.txt", text)
}
위 코드에서 writeFile 함수는 파일 이름과 텍스트를 인수로 받아 파일에 쓰기 작업을 수행합니다. use 블록을 사용하여 BufferedWriter를 안전하게 닫습니다.
Kotlin의 확장 함수를 사용한 파일 쓰기 예제:
import java.io.File
fun main() {
val fileName = "example.txt"
val file = File(fileName)
val text = "Hello, Kotlin File I/O!"
file.writeText(text)
}
위 코드에서 writeText 확장 함수를 사용하여 파일에 텍스트를 간단하게 씁니다.
파일 추가 쓰기 (Appending to a File)
기존 파일에 데이터를 추가로 쓰기 위해서는 appendText 확장 함수를 사용할 수 있습니다.
파일에 텍스트 추가하기 예제:
import java.io.File
fun main() {
val fileName = "example.txt"
val file = File(fileName)
val additionalText = "\nAppending this text to the file."
file.appendText(additionalText)
}
위 코드에서 appendText 확장 함수를 사용하여 파일의 끝에 새로운 텍스트를 추가합니다.
파일 삭제 (Deleting a File)
파일을 삭제하려면 File 클래스의 delete 메서드를 사용합니다.
파일 삭제 예제:
import java.io.File
fun main() {
val fileName = "example.txt"
val file = File(fileName)
if (file.exists()) {
val deleted = file.delete()
if (deleted) {
println("파일이 성공적으로 삭제되었습니다.")
} else {
println("파일 삭제에 실패했습니다.")
}
} else {
println("파일이 존재하지 않습니다.")
}
}
위 코드에서 delete 메서드를 사용하여 파일을 삭제하고, 삭제 성공 여부에 따라 메시지를 출력합니다.
파일 입출력의 예외 처리 (Exception Handling in File I/O)
파일 입출력 작업 중에는 다양한 예외가 발생할 수 있습니다. 이러한 예외를 적절히 처리하는 것이 중요합니다.
예외 처리를 포함한 파일 읽기 예제:
import java.io.File
import java.io.IOException
fun readFileSafely(fileName: String) {
try {
val file = File(fileName)
if (file.exists()) {
val text = file.readText()
println(text)
} else {
println("파일이 존재하지 않습니다.")
}
} catch (e: IOException) {
println("파일을 읽는 도중 오류가 발생했습니다: ${e.message}")
}
}
fun main() {
readFileSafely("example.txt")
}
위 코드에서 try-catch 블록을 사용하여 파일 읽기 도중 발생할 수 있는 IOException을 처리합니다.
Kotlin의 파일 입출력 기능을 잘 활용하면 파일을 읽고 쓰는 작업을 효율적으로 수행할 수 있습니다. 다양한 확장 함수와 예외 처리를 통해 더욱 안전하고 간편하게 파일 작업을 할 수 있습니다.
