2011-10-06 62 views
2

我想删除存储在内部存储器中的文件。该文件不被使用从Android设备删除内存中的文件?

activity.deleteFile(filename); 

但只有在仿真器中删除。在实际的设备上,该方法总是返回false。当我尝试从adb shell访问文件时,显示的权限被拒绝。所以,我猜有删除内存中的文件与权限相关的问题。

有人可以让我知道如何从Android的内部存储器中实际删除文件?

+0

你创建这个文件?你用什么代码来创建它?您是否可以在设备上阅读/访问它? – FoamyGuy

+0

文件路径 – Caner

+0

/data/data/packagename/files/filename.txt – sunil

回答

4

如果您只是在讨论文件系统中的任何文件...这是不是工作?

if (new File("fileUrl").delete()) { 
    // Deleted 
} else { 
    // Not deleted 
} 
+0

什么是fileurl? – sunil

+0

由于安全限制,您只能访问/修改/删除您的应用创建的文件。否则,在访问自己的文件时,代码是可以的。 –

+0

@sunil fileUrl只是该文件的路径。 –

4

由于security constraints您只能删除您的应用程序创建的文件。您也无法删除属于您的应用程序包(apk)的文件,即/res,/assets等文件。

+0

我显然是想删除由同一个应用创建的文件。我不想删除由另一个应用程序创建的文件。 – sunil

+0

你有通往该文件的路径吗?然后,只要做'(新的文件(“路径/到/文件”)。删除())' –

+0

我正在使用文件dir = context.getFilesDir(); File file = new File(dir,filename); file.delete(); – sunil

0

你应该使用:

_context.openFileOutput(fileName, Context.MODE_WORLD_READABLE); 

写入文件

3

这里当FileName是您要删除,没有路径separator.that意味着文件名不应该包含路径的文件名分隔符如“/”。 和文件应该由您的应用程序创建。 我的问题是由代码解决..

if(getApplicationContext().deleteFile(FileName)) { Toast.makeText(getApplicationContext(),"File Deleted",Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(),"Not Deleted",Toast.LENGTH_SHORT).show(); }