【问题标题】:Android Delete File Using URI not workingAndroid使用URI删除文件不起作用
【发布时间】:2018-07-23 07:50:26
【问题描述】:

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

不要标记重复

我尝试了很多答案,但这里没有任何效果是我尝试的问题

How to delete file that is created using Uri?

Delete file using Uri

How to delete file that is created using Uri?

我编写代码从图库中获取图像,然后将其复制到名为“.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();
                }
            }
        }
    }

我哪里做错了??? 提前致谢...

【问题讨论】:

  • contentRevolver 不工作
  • getContentResolver().delete(fileuri,null,null);

标签: java android io


【解决方案1】:
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();
}

【讨论】:

    【解决方案2】:
    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");
                    }
                }
    

    【讨论】:

    • data.getData 返回带有文件名的完整路径
    • OfCourse 但您也必须将文件名作为第二个参数传递。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 2016-09-16
    相关资源
    最近更新 更多