gpt4 book ai didi

java - 如何使用 Android 7 上的路径删除文件?

转载 作者:行者123 更新时间:2023-11-29 18:31:45 26 4
gpt4 key购买 nike

我在存储卡上有一个文件,路径为:/storage/7AB3-1EEF/EXTERNAL_eicar-tf.com

有了File类,我可以读取它,但不能删除它。

那么,如何仅使用文件的真实路径删除文件呢?如果文件存储在 /storage/0/[file]

中,我的代码就可以工作

list 中写的权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

代码完全适用于 Android 4.2.2

我尝试将文件转换为 URI 并将其删除,但收到“未知 URL”错误消息。

Uri ur = Uri.fromFile(new File(reports.get(getAdapterPosition()).getPath()));
context.getContentResolver().delete(ur, null, null);

我的按钮代码:

button_Delete_File.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
File file = new File(reports.get(getAdapterPosition()).getPath()); //Here comes out the described path...
file.delete();
Log.e("File deleted?", reports.get(getAdapterPosition()).getPath());
if (!file.exists()) {
Log.e("Yes", reports.get(getAdapterPosition()).getPath());
} else {
Log.e("No", reports.get(getAdapterPosition()).getPath());
Toast.makeText(context, context.getResources().getString(R.string.delete_file_error), Toast.LENGTH_SHORT).show();
}
}
});

最佳答案

我做到了!感谢Mr. CommonsWare's关于存储访问框架的要点我能够修改我的代码:

button_Delete_File.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) { //Remove item from list and delete assigned file.
if (Build.VERSION.SDK_INT >= 19) {
try {
Uri uri = Uri.parse(reports.get(getAdapterPosition()).getPath());
ContentResolver contentResolver = context.getContentResolver();
contentResolver.takePersistableUriPermission(uri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
DocumentsContract.deleteDocument(contentResolver, uri);
reports.remove(getAdapterPosition());
notifyItemRemoved(getAdapterPosition());
} catch (FileNotFoundException e) {
Toast.makeText(context, context.getResources().getString(R.string.delete_file_not_found), Toast.LENGTH_SHORT).show();
}
} else {
File file = new File(reports.get(getAdapterPosition()).getPath());
file.delete();
if (!file.exists()) {
reports.remove(getAdapterPosition());
notifyItemRemoved(getAdapterPosition());
} else {
Toast.makeText(context, context.getResources().getString(R.string.delete_file_error), Toast.LENGTH_SHORT).show();
}
}
}
});

现在它适用于 Android 4.2.2 和 7.0。

关于java - 如何使用 Android 7 上的路径删除文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55869472/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com