파일에서 특정 열을 선택하는 것은 데이터 처리 및 가공 작업에서 중요한 부분입니다. Kotlin에서는 여러 가지 방법을 사용하여 파일에서 특정 열을 선택할 수 있습니다.
1. BufferedReader와 StringTokenizer 사용하기
import java.io.BufferedReader
import java.io.FileReader
import java.util.*
fun main() {
val fileName = "data.txt"
val columnIndex = 2 // 선택할 열의 인덱스
val fileReader = FileReader(fileName)
val bufferedReader = BufferedReader(fileReader)
var line: String? = null
while (bufferedReader.readLine().also { line = it } != null) {
val tokenizer = StringTokenizer(line, ",")
for (i in 1..columnIndex) {
if (tokenizer.hasMoreTokens()) {
val columnValue = tokenizer.nextToken()
if (i == columnIndex) {
println(columnValue)
}
} else {
break
}
}
}
bufferedReader.close()
}
위의 예시 코드에서는 BufferedReader
와 StringTokenizer
를 사용하여 파일을 읽고, 선택한 열의 값을 출력하는 방법을 보여줍니다. data.txt
파일에서 데이터를 읽어와 ‘,’를 구분자로 각 행을 분리하고, 선택한 열의 값을 출력합니다.
2. CSV 파일 라이브러리 사용하기
만약 CSV 파일에서 특정 열을 선택하는 작업을 자주 수행한다면, CSV 파일 라이브러리를 사용하는 것이 더 효율적일 수 있습니다. 예를 들어 opencsv
라이브러리를 사용하여 파일에서 특정 열을 선택할 수 있습니다.
먼저 build.gradle
파일에 opencsv
라이브러리를 추가해 주세요.
dependencies {
implementation 'com.opencsv:opencsv:5.4'
}
다음으로 아래와 같이 코드를 작성해 주세요.
import com.opencsv.CSVReaderBuilder
import java.io.FileReader
fun main() {
val fileName = "data.csv"
val columnIndex = 2 // 선택할 열의 인덱스
val fileReader = FileReader(fileName)
val csvReader = CSVReaderBuilder(fileReader).withSkipLines(1).build() // 첫 번째 행은 건너뜁니다.
var line: Array<String>? = null
while (csvReader.readNext().also { line = it } != null) {
if (line != null && line!!.size > columnIndex) {
println(line!![columnIndex])
}
}
csvReader.close()
}
위의 예시 코드에서는 opencsv
라이브러리의 CSVReaderBuilder
를 사용하여 CSV 파일을 읽고, 선택한 열의 값을 출력하는 방법을 보여줍니다. data.csv
파일에서 데이터를 읽어와 선택한 열의 값을 출력합니다.
결론
위의 두 가지 방법은 Kotlin에서 파일에서 특정 열을 선택하는 방법을 보여줍니다. BufferedReader와 StringTokenizer
를 사용하는 방법은 간단하면서도 기본적인 파일 처리 작업에 적합하며, opencsv
라이브러리를 사용하는 방법은 좀 더 복잡한 CSV 파일 처리에 유용합니다.
Kotlin에서 파일 처리 작업을 할 때는 문제의 복잡성과 요구사항을 고려하여 적절한 방법을 선택하시면 됩니다.