[kotlin] 파일을 특정 크기로 분할하는 방법

Kotlin은 자바와 같이 파일을 처리하는데 유용한 기능을 제공합니다. 파일을 특정 크기로 분할하는 방법에 대해 알아보겠습니다.

  1. 파일 경로 지정하기

먼저 처리할 파일의 경로를 지정해야 합니다. 파일 경로는 File 클래스를 사용하여 지정할 수 있습니다.

val filePath = "파일 경로"
val file = File(filePath)
  1. 분할할 크기 정하기

파일을 분할할 크기를 정해야 합니다. 일반적으로 바이트 단위로 크기를 지정합니다. 예를 들어, 1MB를 기준으로 파일을 분할하려는 경우 다음과 같이 크기를 정할 수 있습니다.

val fileSize = 1 * 1024 * 1024 // 1MB
  1. 파일 분할하기

파일을 지정한 크기로 분할하는 함수를 작성합니다. 아래의 코드는 파일을 분할하여 새로운 파일들을 생성하는 예시입니다.

fun splitFile(file: File, fileSize: Long) {
    val fileName = file.name
    val inputFileSize = file.length()
    val numberOfParts = inputFileSize / fileSize

    var offset = 0L
    var bytesRemaining = inputFileSize
    var bytesRead: Int

    val buffer = ByteArray(fileSize.toInt())

    BufferedInputStream(FileInputStream(file)).use { inputStream ->
        for (partNumber in 1..numberOfParts) {
            bytesRead = inputStream.read(buffer)
            if (bytesRead <= 0) break

            val partFileName = "$fileName.part$partNumber"
            val outputFilePath = file.parentFile.absolutePath + File.separator + partFileName

            BufferedOutputStream(FileOutputStream(outputFilePath)).use { outputStream ->
                outputStream.write(buffer, 0, bytesRead)
            }

            offset += bytesRead
            bytesRemaining -= bytesRead
        }
    }
}

위의 함수를 사용하여 파일을 분할하려면 다음과 같이 호출할 수 있습니다.

splitFile(file, fileSize)

위의 예시에서는 파일을 지정한 크기로 분할하여 .part 확장자를 가진 여러 개의 파일을 생성합니다.

이제 Kotlin을 사용하여 파일을 특정 크기로 분할하는 방법을 알게 되었습니다. 이를 통해 큰 파일을 처리하거나 네트워크 전송을 위해 파일을 나눌 수 있습니다.

참고 자료