【问题标题】:Android. Save file into shared directory on device安卓。将文件保存到设备上的共享目录中
【发布时间】:2020-07-10 17:41:50
【问题描述】:

我可以将一些数据保存到文件中

    val byteArrayOutputStream = ByteArrayOutputStream()
    byteArrayOutputStream.writeTo(openFileOutput("FILENAME", Context.MODE_PRIVATE))
    val data = byteArrayOf(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    byteArrayOutputStream.write(data)
    byteArrayOutputStream.close()

但我不想将它保存到我的应用程序目录中,而是保存到某个共享文件夹中。

【问题讨论】:

标签: android file stream


【解决方案1】:

如果你想访问外部存储,那么试试这个 android.os.Environment.getExternalStorageDirectory()

【讨论】:

  • 好吧,我用FileOutputStream(File(Environment.getExternalStorageDirectory(), "myfile.txt")) 它工作,文件被创建。但是当我写数据时,它是空的((
  • when I write data, it is empty。你的意思是:when I read data, it is empty?你用什么读文件?文件大小(以字节为单位)是多少?
  • 我不阅读这个文件。我只是在设备上的“我的文件”中找到它,它是 0 b
【解决方案2】:

解决了!

val file = File(Environment.getExternalStorageDirectory(), "myfile.txt")
FileOutputStream(file).use {
  it.write("ASDFGHJKL".toByteArray())
}

你还必须请求运行时权限

if (PERMISSION_GRANTED != ActivityCompat.checkSelfPermission(this, WRITE_EXTERNAL_STORAGE)) {
  ActivityCompat.requestPermissions(this, arrayOf(WRITE_EXTERNAL_STORAGE), 1)
} else {
  createFile()
}

...

 override fun onRequestPermissionsResult(
        requestCode: Int,
        permissions: Array<out String>,
        grantResults: IntArray
    ) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)

        if (requestCode == 1) {
            if (grantResults[0] == PERMISSION_GRANTED) {
                createFile()
            } else {
                // разрешение не получено
            }
        }
    }

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-08-29
  • 1970-01-01
  • 1970-01-01
  • 2020-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-24
相关资源
最近更新 更多