Java Android使用URI删除文件无效

Java Android使用URI删除文件无效,java,android,io,Java,Android,Io,所以我想要的是使用URI删除文件 不标记重复 我试过很多答案,但我试过的问题在这里没有任何效果 我编写代码从gallery中获取图像,然后将其复制到名为“.blackhat”的目录中,并删除原始图像(类似于移动文件功能)…但它不起作用。即使它不是生成日志,我也可以检查错误。 此代码适用于复制文件,但不能在复制后删除 if(requestCode == 2 && data.getData() !=null){ if(cd == null){

所以我想要的是使用URI删除文件

不标记重复

我试过很多答案,但我试过的问题在这里没有任何效果

我编写代码从gallery中获取图像,然后将其复制到名为“.blackhat”的目录中,并删除原始图像(类似于移动文件功能)…但它不起作用。即使它不是生成日志,我也可以检查错误。 此代码适用于复制文件,但不能在复制后删除

if(requestCode == 2 && data.getData() !=null){
        if(cd == null){
            path.add(data.getData());
            Random rn = new Random();
            if(copyFileFromUri(this,data.getData(),String.valueOf(rn.nextInt(500)))){
                File fdelete = new File(data.getData().getPath());
                if (fdelete.exists()) {
                    if (fdelete.delete()) {
                        Log.d("delete","deleted");
                    } else {
                        Log.d("delete","not deleted");
                    }
                }
                Toast.makeText(this, "Done", Toast.LENGTH_SHORT).show();
            }

        }else{
            for(int i=0;i<data.getClipData().getItemCount();i++){
                path.add(data.getClipData().getItemAt(i).getUri());
                Log.d("RjList",path.get(i).toString());
                Random rn=new Random();
                if(copyFileFromUri(this,data.getClipData().getItemAt(i).getUri(),String.valueOf(rn.nextInt(500)))){
                    File fdelete = new File(data.getClipData().getItemAt(i).getUri().getPath());
                    if (fdelete.exists()) {
                        if (fdelete.delete()) {
                            Log.d("delete","deleted");
                        } else {
                            Log.d("delete","not deleted");
                        }
                    }
                    Toast.makeText(this, "Done", Toast.LENGTH_SHORT).show();
                }
            }
        }
    }
if(requestCode==2&&data.getData()!=null){
如果(cd==null){
add(data.getData());
Random rn=新的Random();
if(copyFileFromUri(this,data.getData(),String.valueOf(rn.nextInt(500))){
File fdelete=新文件(data.getData().getPath());
如果(fdelete.exists()){
if(fdelete.delete()){
日志d(“删除”、“删除”);
}否则{
日志d(“删除”、“未删除”);
}
}
Toast.makeText(这个“完成”,Toast.LENGTH_SHORT).show();
}
}否则{

对于(int i=0;icontentRevolver not workinggetContentResolver().delete(fileuri,null,null);data.getData返回文件名为OfCourse的整个路径,但您还必须将文件名作为第二个参数传递。
public static boolean delete(final Context context, final File file) {
final String pathone = MediaStore.MediaColumns.DATA + "=?";
final String[] selectedArgs = new String[] {
        file.getAbsolutePath()
};
final ContentResolver contentResolver = context.getContentResolver();
final Uri fileUri = MediaStore.Files.getContentUri("external");

contentResolver.delete(fileUri, pathone, selectedArgs );

if (file.exists()) {

    contentResolver.delete(fileUri, pathone, selectedArgs );
}
return !file.exists();
}
File fdelete = new File(data.getData().getPath(),"here you should pass the file name");
            if (fdelete.exists()) {
                if (fdelete.delete()) {
                    Log.d("delete","deleted");
                } else {
                    Log.d("delete","not deleted");
                }
            }