drcarter의 DevLog

kotlin file read...

Android2019. 4. 17. 18:30

kotlin으로 파일을 읽는 방법은 java로 할 하는 경우보다는 간단?? 한듯 합니다.

최종적으로 android하면서 사용한 방법은

fun fileRead(context: Context, fileUri: Uri): String {
        val sb = StringBuilder()
        val inputStream = context.contentResolver.openInputStream(fileUri)
        inputStream?.let {
            val reader = BufferedReader(InputStreamReader(inputStream))
            val readLines = reader.readLines()
            readLines.forEach {
                sb.append(it)
            }
            
            it.close()
        }
        return sb.toString()
    }

이지만 아래와 같은 방법들이 있습니다.

1. forEachLine

fun fileReadforEachLine(file: String): String {

        val sb = StringBuilder()

        File(file).forEachLine {
            sb.append(it)
        }

        return sb.toString()
    }

2. useLines

fun fileReadUseLines(file: String): String {
        val sb = StringBuilder()

        File(file).useLines {
            it.forEach { str ->
                sb.append(str)
            }
        }

        return sb.toString()
    }

3. bufferedReader

fun fileReadBufferedReader(file: String): String {
        val sb = StringBuilder()

        File(file).bufferedReader().readLine().forEach {
            sb.append(it)
        }

        return sb.toString()
    }

4. readLines

fun fileReadReadLines(file: String): String {
        val sb = StringBuilder()

        File(file).readLines().forEach {
            sb.append(it)
        }

        return sb.toString()
    }

5. inputStream

fun fileReadInputStream(file: String): String {
        return File(file)
            .inputStream()
            .readBytes()
            .toString(Charsets.UTF_8)
    }

6. readText

fun fileReadReadText(file: String): String {
        return File(file).readText(Charsets.UTF_8)
    }