8

在此处输入图像描述

我正在实现一个在外部存储中生成和创建文件的应用程序。我怎样才能删除它?

编辑

我添加了以下代码,但我仍然遇到同样的问题。请参阅下面的代码:

String fullPath = "/mnt/sdcard/";
System.out.println(fullPath);
try{
    File file = new File(fullPath, "audio.mp3");
    if(file.exists()){
        boolean result = file.delete();
        System.out.println("Application able to delete the file and result is: " + result);
        // file.delete();
    }else{
        System.out.println("Application doesn't able to delete the file");
    }
}catch (Exception e){
    Log.e("App", "Exception while deleting file " + e.getMessage());
}

在 LogCat 中,我让Application 能够删除文件,结果是:false。执行此操作后,我附上了我的屏幕截图。

4

8 回答 8

14
File file = new File(selectedFilePath);
boolean deleted = file.delete();

其中 selectedFilePath 是您要删除的文件的路径 - 例如:

/sdcard/YourCustomDirectory/ExampleFile.mp3
于 2013-02-06T11:11:21.173 回答
4

这是另一种方法,只需传递您的目录名称即可删除其中的内容

前任"/sdcard/abc/yourdata"

public void deleteFiles(String path) {      
    File file = new File(path);

    if (file.exists()) {
        String deleteCmd = "rm -r " + path;
        Runtime runtime = Runtime.getRuntime();
        try {
            runtime.exec(deleteCmd);
        } catch (IOException e) {

        }
    }

}
于 2013-02-06T11:13:18.723 回答
4

我想你忘了把写权限放在你的 AndroidManifest.xml 文件中,这就是 delete() 总是返回 false 的原因。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
于 2014-03-26T10:12:50.563 回答
3

尝试以下代码删除自动创建的文件,当您不知道它的存储位置时:

public void clearApplicationData() {
    File cache = getCacheDir();
    File appDir = new File(cache.getParent());
    if (appDir.exists()) {
        String[] children = appDir.list();
        for (String s : children) {
            if (!s.equals("lib")) {
                deleteDir(new File(appDir, s));
                Log.i("TAG",
                        "**************** File /data/data/APP_PACKAGE/" + s
                                + " DELETED *******************");
            }
        }
    }
}

public static boolean deleteDir(File dir) {
    if (dir != null && dir.isDirectory()) {
        String[] children = dir.list();
        for (int i = 0; i < children.length; i++) {
            boolean success = deleteDir(new File(dir, children[i]));
            if (!success) {
                return false;
            }
        }
    }

    return dir.delete();
}
于 2013-02-06T11:16:11.157 回答
2

它非常简单:

File file = new File(YOUR_IMAGE_PATH).delete();
if(file.exists())
    file.delete();

希望它会帮助你。

于 2013-02-06T11:06:44.580 回答
2

试试这个,它会从外部存储中删除文件。

public void deleteFromExternalStorage(String fileName) {
    String fullPath = "/mnt/sdcard/";
    try
    {
        File file = new File(fullPath, fileName);
        if(file.exists())
            file.delete();
    }
    catch (Exception e)
    {
        Log.e("App", "Exception while deleting file " + e.getMessage());
    }
}
于 2013-02-06T11:24:27.407 回答
1
File file = new File(selectedFilePath);
boolean deleted = file.delete();

路径将类似于:/mnt/Pictures/SampleImage.png

于 2013-02-06T11:05:38.907 回答
1
public void deleteOnExit ()

安排此文件在 VM 正常终止时自动删除。

请注意,在 Android 上,应用程序生命周期不包括 VM 终止,因此调用此方法不会确保文件被删除。相反,您应该使用最合适的:

使用 finally 子句手动调用 delete()。维护您自己的要删除的文件集,并在应用程序生命周期的适当时间点对其进行处理。使用 Unix 技巧,在所有读取器和写入器打开文件后立即删除文件。没有新的读取器/写入器能够访问该文件,但所有现有的读取器/写入器仍然可以访问,直到最后一个关闭文件。

于 2013-02-06T11:06:16.660 回答