0

When read in a file from android asset folder, is there performance difference if use bufferedReader.readLine() with StringBuilder to read line by line, or use bufferedReader.readText() to read in all?

bufferedReader.readLine()

fun readFileFromAssets(assetManager: AssetManager, filename: String): String {
        return try {
            val inputStream = assetManager.open(filename)
            val bufferedReader = BufferedReader(InputStreamReader(inputStream))
            val stringBuilder = StringBuilder()
            var line: String? = bufferedReader.readLine()
            while (line != null) {
                stringBuilder.append(line)
                line = bufferedReader.readLine()
            }
            bufferedReader.close()
            stringBuilder.toString()
        } catch (e: Throwable) {
            ""
        }
    }

bufferedReader.readText():

fun readFileFromAssets(assetManager: AssetManager, filename: String): String {
        return try {
            assetManager.open(filename)
                .bufferedReader().use {
                    it.readText()
                }
        } catch (e: Throwable) {
            ""
        }
    }
lannyf
  • 9,865
  • 12
  • 70
  • 152
  • It's best if you time it yourself. If files are small, it doesn't make sense to optimize it anyway. And as long as you're not using `Scanner` (it's absurdly slow), you're probably fine. – Remc4 Jun 09 '23 at 14:25

0 Answers0