Как сохранить файл DOCX в папке активов в общий каталог устройства на устройстве Android, например, «Загрузки» - PullRequest
0 голосов
/ 11 ноября 2019

Я пытаюсь сохранить файлы из папки ресурсов в общедоступный каталог устройства Android, например, «Загрузки». Обычный файл для чтения и записи не работает. Как это сделать?

Я пробовал это Как скопировать файлы из папки 'assets' в sdcard? , но это не сработало.

fun copy() {
val bufferSize = 1024
val assetManager = context.assets
val assetFiles = assetManager.list("")

assetFiles.forEach {
    val inputStream = assetManager.open(it)
    val outputStream = FileOutputStream(File(this.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS), it))

    try {
        inputStream.copyTo(outputStream, bufferSize)
    } finally {
        inputStream.close()
        outputStream.flush()
        outputStream.close()
    }
}

}

1 Ответ

1 голос
/ 11 ноября 2019

Убедитесь, что у вас включены разрешения на чтение / запись во время выполнения, и после этого вы просто можете использовать этот код для сохранения любого файла в каталоге.

fun saveImageToExternalStorage(image:Bitmap) {
  val fullPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/downloads"
  try
  {
    val dir = File(fullPath)
    if (!dir.exists())
    {
      dir.mkdirs()
    }
    val fOut:OutputStream = null
    val file = File(fullPath, "image.png")
    if (file.exists())
    file.delete()
    file.createNewFile()
    fOut = FileOutputStream(file)
    // 100 means no compression, the lower you go, the stronger the compression
    image.compress(Bitmap.CompressFormat.PNG, 100, fOut)
    fOut.flush()
    fOut.close()
  }
  catch (e:Exception) {
    Log.e("saveToExternalStorage()", e.message)
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...