簡體   English   中英

Android 工作室 Kotlin 文件讀取

[英]Android Studio Kotlin File Read

嘿,我有這個工作的 FileWrite 例程,我可以簡單地調用它

writeFile("Filename as String","Filetext as String")

但我無法讀回我嘗試過很多解決方案的文件。 我只想像這樣調用讀取例程:readFile("Filename as String") 文件數據應該 go 到 Sting:"txtfromfile"

`fun writeFile(name : String, data : String) {
    val contentValues = ContentValues().apply {
        put(MediaStore.MediaColumns.DISPLAY_NAME, name)
        put(MediaStore.MediaColumns.MIME_TYPE, "text/plain")
        put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DOCUMENTS + "/Sunny/")
    }

    val extVolumeUri: Uri = MediaStore.Files.getContentUri("external")


    // query for the file
    val cursor: Cursor? = contentResolver.query(
        extVolumeUri,
        null,
        MediaStore.MediaColumns.DISPLAY_NAME + " = ? AND " + MediaStore.MediaColumns.MIME_TYPE + " = ?",
        arrayOf(name, "text/plain"),
        null
    )

    var fileUri: Uri? = null

    // if file found
    if (cursor != null && cursor.count > 0) {
        // get URI
        while (cursor.moveToNext()) {
            val nameIndex = cursor.getColumnIndex(MediaStore.MediaColumns.DISPLAY_NAME)
            if (nameIndex > -1) {
                val displayName = cursor.getString(nameIndex)
                if (displayName == name) {
                    val idIndex = cursor.getColumnIndex(MediaStore.MediaColumns._ID)
                    if (idIndex > -1) {
                        val id = cursor.getLong(idIndex)
                        fileUri = ContentUris.withAppendedId(extVolumeUri, id)
                    }
                }
            }
        }

        cursor.close()
    } else {
        // insert new file otherwise
        fileUri = contentResolver.insert(extVolumeUri, contentValues)
    }

    if (fileUri != null) {
        val os = contentResolver.openOutputStream(fileUri, "wt")

        if (os != null) {
            os.write(data.toByteArray())
            os.close()
        }
    }
}`

我嘗試了很多閱讀例程,但我找不到任何可以像我的寫例程一樣調用的例程

我試過了,但它給了我“java.io.FileNotFoundException:打開失敗:ENOENT(沒有這樣的文件或目錄)”

fun readFile(name : String) {
    val contentValues = ContentValues().apply {
        put(MediaStore.MediaColumns.DISPLAY_NAME, name)
        put(MediaStore.MediaColumns.MIME_TYPE, "text/plain")
        put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DOCUMENTS + "/Sunny/")
    }

    val extVolumeUri: Uri = MediaStore.Files.getContentUri("external")

    var fileUri: Uri? = null

    fileUri = contentResolver.insert(extVolumeUri, contentValues)


    val os = fileUri?.let { contentResolver.openInputStream(it) }

    if (os != null) {
        txtfromfile = os.read().toString()
        os.close()
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM