我使用以下函数将长字符串(字节数组大小为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调度程序中运行此函数。
答案 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在写入文件之前找到了一个非常长的字符串。