Android将字符串写入文件需要太长时间

时间:2017-10-17 03:44:28

标签: android kotlin java-io

我使用以下函数将长字符串(字节数组大小为871504)写入Android设备的内部存储器,但需要大约一分半钟才能完成。但是,对于另一个字符串(字节数组大小为782979),只需几秒钟即可完成。

fun saveTempSrc(data: String, ctx: Context) {
    try {
        val dataByteArray = data.toByteArray()
        Timber.d("saveTempSrc: byte array size = %d", dataByteArray.size)
        val inputStream = BufferedInputStream(ByteArrayInputStream(dataByteArray))
        val outputStream = BufferedOutputStream(ctx.openFileOutput("example.txt", Context.MODE_PRIVATE))
        inputStream.copyTo(outputStream)
        inputStream.close()
        outputStream.flush()
        outputStream.close()
    } catch (e: IOException) {
        Timber.e(e, "Write Temp file failed")
    }
}

此函数是否适合将长字符串写入文件?我在RxJava的I / O调度程序中运行此函数。

2 个答案:

答案 0 :(得分:0)

尝试使用FileWriter。

val sdcard = ctx.getExternalStorageDirectory()
val file = File("example.txt", sdcard)
val fileWriter = FileWriter(file)
fileWriter.write(data)
fileWriter.flush()
fileWriter.close()

答案 1 :(得分:0)

很抱歉,漫长的等待时间不是由于文件I / O造成的,而是由于Regex在写入文件之前找到了一个非常长的字符串。