2017-07-27 71 views
0

我想删除一个文件,但文件没有被删除,我的应用程序没有引发任何错误。下面是我的代码:使用File.delete()和Uri删除文件

final File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + '/' + "howmany.txt"); 

    Uri uri = Uri.fromFile(file); 
    Boolean k = new File(uri.getPath()).delete(); 
    if(k){ 
     Toast.makeText(getApplicationContext(), "DELETED", Toast.LENGTH_SHORT).show(); 
    } 

我把这段代码检查权限之后,从我的理解,.delete()返回true,如果完成了动作,所以如果我想显示一个烤面包,但面包拷从未显示。最奇怪的是我没有得到任何错误,但它不工作。

+2

为什么你将它转换为Uri,然后删除基于该Uri的新文件? –

+0

@rabbitguy从其他一些堆栈问题中得到了答案,我应该把所有的Uri东西拿出来吗? – cjnash

+1

你可以在创建该对象后说'file.delete();'并从该 –

回答

1

您不需要创建文件对象的Uri,然后从该Uri创建文件对象。只需删除文件对象并从中获取布尔结果。您也不需要创建k布尔值。你可以测试删除本身:

final File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + '/' + "howmany.txt"); 
if (file.delete()) 
    Toast.makeText(getApplicationContext(), "DELETED", Toast.LENGTH_SHORT).show();