【问题标题】:java.io.FileNotFoundException: /storage/emulated/0/Download/file.jpg: open failed: EEXIST (File exists) in kotlinjava.io.FileNotFoundException:/storage/emulated/0/Download/file.jpg:打开失败:Kotlin 中的 EEXIST(文件存在)
【发布时间】:2022-11-09 22:56:06
【问题描述】:

我正在制作从服务器下载文件的功能。下载文件的功能工作正常。但是,当用户进入文件资源管理器手动删除文件并再次尝试下载时,出现错误 java.io.FileNotFoundException: /storage/emulated/0/Download/File.jpg: open failed: EEXIST (File exists) .有没有办法在不使用 MANAGE_EXTERNAL_STORAGE 权限的情况下解决这个问题?

使用 HTTPUriConnection 正在下载文件,它读取为 inputstream 并将文件保存在指定为 outputstream 的路径中。

我指定的下载路径是“Environment.getExternalStorageDirectory().toString() + "/" + Environment.DIRECTORY_DOWNLOADS”。

【问题讨论】:

  • 自 Android 11 起,硬编码文件路径已被禁用。试试 Scoped Storage。
  • 如果用户不删除该文件,您可以再次下载并覆盖第一个文件吗?您的应用程序应该能够这样做。使用的设备上的哪个 Android 版本?
  • 遇到错误时使用其他名称,例如File (2).jpg。或者,使用ACTION_CREATE_DOCUMENT 并允许用户选择保存内容的位置。
  • 就我而言,使用 Android 11 并且如果用户不删除文件,则可以覆盖第一个文件。

标签: java android file kotlin exists


【解决方案1】:

String pdfPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString();

    File file = new File(pdfPath,"Customer.pdf");
    file.delete();//just add this line after initialize the file path. It will remove existing file.

【讨论】:

    猜你喜欢
    • 2021-05-15
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    相关资源
    最近更新 更多