无法使用file.delete()删除文件?

时间:2017-11-05 08:15:32

标签: android

我正在写两个文件夹之间的同步操作。

首先,目标文件夹将删除其所有.bmp文件。 接下来,源文件夹中的.bmp文件将被复制到目标文件夹

我目前正处于第一步,尝试删除目标文件夹上的所有.bmp文件。 当我使用file.delete()时,在手机的文件浏览器中查看时,该文件将被删除。 但当我通过我的电脑查看时,文件仍然在里面。

我已经尝试过将usb线重新插入手机。删除的文件仍在那里。

任何想法都错了吗?

继承人我所做的事情:

 private void getBMPfiles() {

    Log.d("getBMPFiles", "sourcePath is: " + targetPath);

    File targetDirector1 = new File(targetPath);
    File[] files = targetDirector1.listFiles();
    for (File file : files){
        String filename=file.getAbsolutePath();
        if(filename.endsWith(".bmp")){
            Log.i("deleting: ",filename);
            file.delete();
        }

    }

}

3 个答案:

答案 0 :(得分:0)

你可以尝试

void deletAllFile() {
    String[] myFiles;
    File extStorageDirectory = Environment.getExternalStorageDirectory();
    File file = new File(extStorageDirectory, "targertfolder");
    if (file.isDirectory()) {
        myFiles = file.list();
        for (int i = 0; i < myFiles.length; i++) {
            File myFile = new File(file, myFiles[i]);
            myFile.delete();
        }
    }
}

答案 1 :(得分:0)

delete方法返回Boolean,首先检查它是否返回true。如果它返回false,到目前为止我已经看到,如果没有将SD卡设置为内部存储器,如果有人知道从SD卡中删除的方法,则无法使用绝对路径从SD卡中删除文件以上KitKat随时纠正我。要删除文件,最好使用Uri with Documentfile或DocuementContract类删除方法

答案 2 :(得分:0)

感谢greenapps和Fatih Ozcan,

我已将代码更改为

private void getBMPfiles() {

Log.d("getBMPFiles", "sourcePath is: " + targetPath);

File targetDirector1 = new File(targetPath);
File[] files = targetDirector1.listFiles();
for (File file : files){
    String filename=file.getAbsolutePath();
    if(filename.endsWith(".bmp")){
        Log.i("deleting: ",filename);
        boolean delCheck = file.delete();
            if (delCheck==true){
                Log.d("getBMPFiles", "Deleted: " + dfilename);
            }
            else if(delCheck==false){
                Log.d("getBMPFiles", "error deleting: " + dfilename);
            }
    }

}

}