Назначения не являются выражениями, и в этом контексте допускаются только выражения - PullRequest
0 голосов
/ 30 апреля 2019
private fun copyDatabase(context: Context): Boolean {
    try {

        val inputStream = context.assets.open(DatabaseHelper.DBNAME)
        val outFileName = DatabaseHelper.DBLOCATION + DatabaseHelper.DBNAME
        val outputStream = FileOutputStream(outFileName)
        val buff = ByteArray(1024)
        var length = 0

        while((length = inputStream.read(buff)) > 0) {
            outputStream.write(buff , 0 , length)
        }

        outputStream.flush()
        outputStream.close()
        Log.w("MainActivity" , "DB copied")
        return true
    } catch (e: Exception) {
        e.printStackTrace()
        return false
    }

}

"пока" в этом коде не работает, мне нужна помощь, пожалуйста

Ответы [ 2 ]

1 голос
/ 30 апреля 2019

Вы можете исправить это следующим образом:

    ...
    var length = inputStream.read(buff)

    while(length  > 0) {
        outputStream.write(buff , 0 , length)
        length = inputStream.read(buff)
    }
    ...  

но @Илья прав, вы находитесь на земле Котлина и вам лучше использовать инструменты, которые предоставляет Котлин

1 голос
/ 30 апреля 2019

Похоже, вы пытаетесь скопировать содержимое InputStream в OutputStream. Для этой задачи вы можете использовать функцию расширения InputStream.copyTo в Kotlin:

// instead of while loop
inputStream.copyTo(outputStream, bufferSize = 1024)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...