如何使用Kotlin在内部存储中创建文件夹和文件

jjjwad0x  于 2023-06-30  发布在  Kotlin
关注(0)|答案(3)|浏览(302)

我正在尝试在内部存储上创建文件和文件夹
在清单中,我有

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

这些许可。

fun test(view: View) {
        try {
            val myObj = File("filename.txt")
            if (myObj.createNewFile()) {
                println("File created: " + myObj.name)
            } else {
                println("File already exists.")
            }
        } catch (e: IOException) {
            println("An error occurred.")
            e.printStackTrace()
        }
    }
}

我来吧

An error occurred.
java.io.IOException: Read-only file system

我尝试了很多其他的东西,从javatpoint到官方的java和Kotlin教程。但都不管用

6mw9ycah

6mw9ycah1#

好的,我明白了,没有指定正确的路径。

val data: String = "om namah shivaya"
        val path = this.getExternalFilesDir(null)

        val folder = File(path, "avalakki")
        folder.mkdirs()

        println(folder.exists()) // u'll get true 

        val file = File(folder, "file_name.txt")
        file.appendText("$data")

然后要检查此操作,请导航到
Android ->数据-> com.your.pkg_name ->文件->
将看到创建的文件。

注意:-我们可以使用不同的路径

val path = this.externalCacheDir
Android -> data -> com.your.pkg_name -> cache ->
val path = this.externalMediaDirs.first()
Android ->媒体
val path = this.getExternalFilesDirs(null).first()
val path = Environment.getExternalStorageDirectory().getPath()
打印并检查路径。

fcg9iug3

fcg9iug32#

您正在尝试在根目录中创建文件,这是不允许的。您可以使用Environment.getExternalStorageDirectory()在内部存储/SD卡中创建文件。使用下面的代码:

val myObj = File(Environment.getExternalStorageDirectory()+"/"+"filename.txt")

注意:Environment.getExternalStorageDirectory()在java API级别29中不推荐使用
请参阅Environment.getExternalStorageDirectory() deprecated in API level 29 java了解更多详情。

bzzcjhmw

bzzcjhmw3#

2023年6月实际

要从Activity写入Internal Storage,请使用以下代码段:

applicationContext.openFileOutput("filename.txt", Context.MODE_PRIVATE).use {
        it.write("your text".toByteArray())
    }

**注意!**使用applicationContext,而不是context

现在强烈建议使用DataStorehttps://developer.android.com/topic/libraries/architecture/datastore

相关问题