2017-10-17 91 views
2

我使用以下函數將一個長字符串(字節數組大小爲871504)寫入Android設備的內部存儲器,但需要大約一分半鐘的時間才能完成。但是,對於另一個字符串(字節數組大小爲782979),只需幾秒鐘即可完成。Android寫入文件的字符串需要太長時間

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

你爲什麼要將該字符串轉換爲字節數組? – greenapps

回答

0

嘗試使用FileWriter。

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

遺憾的是漫長的等待時間是因爲文件I/O,但由於正則表達式找到寫文件之前,一個很長的字符串。