android - 赋值不是表达式 - Kotlin

标签 android database sqlite kotlin

我正在将我用 Java 构建的项目重构为 Kotlin,并从 sqlite Assets 表复制数据库我正在这样做,它工作正常。

private void copyDataBase() throws IOException {
        InputStream mInput = mContext.getAssets().open(DB_NAME);
        String outFileName = DB_PATH + DB_NAME;
        OutputStream mOutput = new FileOutputStream(outFileName);
        byte[] mBuffer = new byte[1024];
        int mLength;
        while ((mLength = mInput.read(mBuffer)) > 0) {
            mOutput.write(mBuffer, 0, mLength);
        }
        mOutput.flush();
        mOutput.close();
        mInput.close();
    }

如何处理“赋值不是表达式,在此上下文中只允许使用表达式”?

@Throws(IOException::class)
    private fun copyDataBase() {
        val mInput = mContext.assets.open(DB_NAME)
        val outFileName = DB_PATH + DB_NAME
        val mOutput = FileOutputStream(outFileName)
        val mBuffer = ByteArray(1024)
        var mLength: Int
        while ((mLength = mInput.read(mBuffer)) > 0) {
            mOutput.write(mBuffer, 0, mLength)
        }
        mOutput.flush()
        mOutput.close()
        mInput.close()
    }

错误在这里

while ((mLength = mInput.read(mBuffer)) > 0) {
            mOutput.write(mBuffer, 0, mLength)
        }

谢谢。

最佳答案

将其更改为:

 mLength = mInput.read(mBuffer)
 while (mLength > 0) { 
        mOutput.write(mBuffer, 0, mLength)
        mLength = mInput.read(mBuffer)
    }

关于android - 赋值不是表达式 - Kotlin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51399793/

相关文章:

triggers - sqlite3 触发器将十六进制文本转换为等效的二进制 blob

nhibernate - SQLite NHibernate 配置与 .Net 4.0 和 vs 2010

.net - 我应该在哪里创建我的 DbCommand 实例?

android - Firebase 应用内消息传递 - Android 中的 PERMISSION_DENIED(请求被阻止的问题)

mysql - 错误 2006 (HY000) 在第 2759 行 : MySQL server has gone away

database - 轮询数据库还是从数据库触发程序?

database - 退出 Web 应用程序的计划

android - 如何使用 Malloc Debug 检查 native 内存泄漏?

android - 在Android中通过FFMpeg实现视频过滤器

java - 是否可以在 android 中合并未知数量的 firestore 查询?