[kotlin] 파일의 특정 부분을 삭제하는 방법
  1. 파일을 읽기 모드로 열고 새 파일에 원하는 부분을 제외하고 복사하는 방법입니다. 이 방법은 원본 파일을 변경하지 않고 지정된 부분을 삭제하는데 유용합니다. 아래 예제 코드를 확인해보세요.
import java.io.*

fun main() {
    val inputFile = File("input.txt")
    val outputFile = File("output.txt")

    // 입력 파일을 읽기 모드로 열기
    val reader = BufferedReader(FileReader(inputFile))
    // 출력 파일을 쓰기 모드로 열기
    val writer = BufferedWriter(FileWriter(outputFile))

    // 삭제할 부분의 시작과 끝 인덱스 지정
    val startIndex = 5
    val endIndex = 10

    var line: String?

    // 파일의 모든 줄을 읽어서 삭제할 부분을 제외하고 출력 파일에 쓰기
    while (reader.readLine().also { line = it } != null) {
        val newLine = line?.removeRange(startIndex, endIndex)
        writer.write(newLine)
        writer.newLine()
    }

    // 리소스 정리
    reader.close()
    writer.close()

    // 원본 파일 삭제
    inputFile.delete()

    // 출력 파일을 원본 파일 이름으로 변경
    outputFile.renameTo(inputFile)
}

위의 코드에서는 input.txt 파일을 읽어서 output.txt 파일에 삭제할 부분을 제외하고 복사합니다. 삭제할 부분의 시작과 끝 인덱스를 startIndexendIndex 변수로 지정하고, 해당 부분을 removeRange() 함수로 제거한 후 출력 파일에 쓰게 됩니다. 마지막으로 원본 파일을 삭제하고 출력 파일의 이름을 원본 파일 이름으로 변경하여 원본 파일을 대체합니다.

  1. 다른 방법으로는 파일의 내용을 전체적으로 메모리에 로드한 후, 삭제할 부분을 제외한 문자열로 변경하여 파일에 다시 쓰는 방법이 있습니다. 이 방법은 작은 크기의 파일에 적합합니다. 아래 예제 코드를 확인해보세요.
import java.io.File

fun main() {
    val inputFile = File("input.txt")

    // 파일 전체 내용을 스트링으로 로드
    var content = inputFile.readText()

    // 삭제할 부분의 시작과 끝 인덱스 지정
    val startIndex = 5
    val endIndex = 10

    // 삭제할 부분을 제외한 새로운 문자열 생성
    content = content.removeRange(startIndex, endIndex)

    // 기존 파일 삭제
    inputFile.delete()

    // 새로운 문자열로 파일을 다시 쓰기
    inputFile.writeText(content)
}

위의 코드에서는 input.txt 파일의 전체 내용을 스트링으로 로드한 후, 삭제할 부분을 제외한 새로운 문자열을 생성합니다. 그리고 원본 파일을 삭제하고 새로운 문자열로 파일을 다시 씁니다.

참고로, 파일을 수정하는 작업을 수행할 때에는 주의해야 합니다. 파일을 수정하기 전에 백업을 만들거나 실제로 수행할 작업에 대한 검증을 수행하는 것이 좋습니다. 또한, 파일을 자주 업데이트하는 경우에는 이러한 작업을 효율적으로 처리하기 위해 다른 방법을 고려해 볼 수 있습니다.