[kotlin] 파일에서 특정 열을 선택하는 방법

파일에서 특정 열을 선택하는 것은 데이터 처리 및 가공 작업에서 중요한 부분입니다. 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()
}

위의 예시 코드에서는 BufferedReaderStringTokenizer를 사용하여 파일을 읽고, 선택한 열의 값을 출력하는 방법을 보여줍니다. 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에서 파일 처리 작업을 할 때는 문제의 복잡성과 요구사항을 고려하여 적절한 방법을 선택하시면 됩니다.