Java Android中的file.delete()会留下一个不可读的小文件

Java Android中的file.delete()会留下一个不可读的小文件,java,android,image,file,Java,Android,Image,File,我正在尝试从我的图库中删除图像。我正在使用从这里获得的代码: 这似乎对某些人有效,但不幸的是对我无效。如果我运行它,一个小的,不可读的文件会留在后面。我使用的是安卓4.1.2 代码如下: public void deleteImage(File fdelete) { //String file_dj_path = Environment.getExternalStorageDirectory() + "/ECP_Screenshots/abc.jpg"; //File fdel

我正在尝试从我的图库中删除图像。我正在使用从这里获得的代码:

这似乎对某些人有效,但不幸的是对我无效。如果我运行它,一个小的,不可读的文件会留在后面。我使用的是安卓4.1.2

代码如下:

public void deleteImage(File fdelete) {
    //String file_dj_path = Environment.getExternalStorageDirectory() + "/ECP_Screenshots/abc.jpg";
    //File fdelete = new File(file_dj_path);
    if (fdelete.exists()) {
        if (fdelete.delete()) {
            Log.e("-->", "file Deleted :" + fdelete);
            callBroadCast();
        } else {
            Log.e("-->", "file not Deleted :" + fdelete);
        }
    }
}

public void callBroadCast() {
    if (Build.VERSION.SDK_INT >= 14) {
        Log.e("-->", " >= 14");
        MediaScannerConnection.scanFile(this, new String[]{Environment.getExternalStorageDirectory().toString()}, null, new MediaScannerConnection.OnScanCompletedListener() {
            /*
             *   (non-Javadoc)
             * @see android.media.MediaScannerConnection.OnScanCompletedListener#onScanCompleted(java.lang.String, android.net.Uri)
             */
            public void onScanCompleted(String path, Uri uri) {
                Log.e("ExternalStorage", "Scanned " + path + ":");
                Log.e("ExternalStorage", "-> uri=" + uri);
            }
        });
    } else {
        Log.e("-->", " < 14");
        sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
                Uri.parse("file://" + Environment.getExternalStorageDirectory())));
    }
}
public void deleteImage(文件fdelete){
//字符串文件_dj_path=Environment.getExternalStorageDirectory()+“/ECP_屏幕截图/abc.jpg”;
//File fdelete=新文件(文件路径);
如果(fdelete.exists()){
if(fdelete.delete()){
Log.e(“-->”,删除的“文件:”+fdelete);
callBroadCast();
}否则{
Log.e(“-->”,文件未删除:“+fdelete”);
}
}
}
公共广播{
如果(Build.VERSION.SDK_INT>=14){
Log.e(“-->”,即“>=14”);
MediaScannerConnection.scanFile(此,新字符串[]{Environment.getExternalStorageDirectory().toString()},空,新MediaScannerConnection.OnScanCompletedListener(){
/*
*(非Javadoc)
*@see android.media.MediaScannerConnection.OnScanCompletedListener#onScanCompleted(java.lang.String,android.net.Uri)
*/
已完成的公共void(字符串路径,Uri){
Log.e(“外部存储”,“扫描”+路径+:”);
Log.e(“外部存储”,“->uri=“+uri”);
}
});
}否则{
Log.e(“-->”和“<14”);
sendBroadcast(新意图(意图、行动和媒体),
parse(“文件:/”+Environment.getExternalStorageDirectory());
}
}
如果通过

不可读的小文件

你是说零,你可以这样做:

long fileSize = fdelete.length();
if (fdelete.exists() || fileSize==0){
    fdelete.delete();
}
那就做吧

    if (fdelete.delete()) {
        Log.e("-->", "file Deleted :" + fdelete);
        callBroadCast();
    } else {
        Log.e("-->", "file not Deleted :" + fdelete);
    }

你试过这个特别的答案吗?thanx mate,它确实起作用了,但问题是它只起作用了三次,很奇怪,之后我必须重新启动应用程序。