【发布时间】: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