【问题标题】:file.delete() returning true but the file is still therefile.delete() 返回 true 但文件仍然存在
【发布时间】:2017-05-08 06:15:50
【问题描述】:

我正在按照此代码删除一个 apk 文件,然后再下载另一个文件并安装它

String destination = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/";
String fileName = getResources().getString(R.string.apkname) + ".apk";
destination += fileName;
final Uri uri = Uri.parse("file://" + destination);

File file = new File(destination);
if (file.canRead()) {
    if (file.delete()) {
        Toast.makeText(getApplicationContext(), "File deleted", Toast.LENGTH_LONG).show();
    }
}

我正在查找该文件,所以我访问了 file.delete(),然后我收到了 toast 消息,但是当我签入下载时,该文件仍然存在并且我最终得到了多个同名文件,我仍然可以毫无问题地使用它们,所以就像 file.delete() 完全没有做任何事情一样。

为了记录,我在清单中有 WRITE_EXTERNAL_STORAGE 权限,并且我也在运行时请求它,因为我使用的是 sdkversion 25。

怎么了?

提前致谢

【问题讨论】:

  • 您是否尝试重新启动您的 Android 设备并验证是否存在重复文件?
  • @Divya 实际上我正在使用模拟器。
  • 添加 tryexception 并检查什么是错误?
  • @NitinPatel 不,根本没有报错
  • @SantiagoCuartasArango 仍然尝试重新启动。

标签: java android file apk


【解决方案1】:

试试我测试过的这个解决方案...

        String destination = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/";
        String fileName = getResources().getString(R.string.apkname) + ".apk";
        destination += fileName;

        try {
            File file = new File(destination);
            if (file.canRead()) {

                boolean mDeleleFile = file.delete();
                context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File(destination))));
                if (mDeleleFile) {
                    Toast.makeText(getApplicationContext(), "File deleted", Toast.LENGTH_LONG).show();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

我有来自How to delete a file from SD card?的参考

【讨论】:

  • 文件在那里,但我仍然收到 toast 消息,所以mDeleteFile 是真的
  • 我已经为我测试了这项工作。一旦请检查应用程序权限,请手动转到.. 通过应用程序信息并检查外部存储权限
  • 抱歉,回答延迟。运行时要求的许可还不够吗?您的解决方案适用于哪个 android 版本?
猜你喜欢
  • 2013-02-26
  • 1970-01-01
  • 1970-01-01
  • 2018-10-10
  • 1970-01-01
  • 2014-10-07
  • 1970-01-01
  • 1970-01-01
  • 2017-08-15
相关资源
最近更新 更多