Android Can';t从内部存储文件夹中删除文件
我想从下载文件夹中删除所有文件 我正在尝试这种方法-Android Can';t从内部存储文件夹中删除文件,android,android-file,Android,Android File,我想从下载文件夹中删除所有文件 我正在尝试这种方法- File mydir = new File(String.valueOf(Environment.getExternalStoragePublicDirectory("Download"))); File lister = mydir.getAbsoluteFile(); System.out.println("Total files: " + lister.list().length); for (String list : list
File mydir = new File(String.valueOf(Environment.getExternalStoragePublicDirectory("Download")));
File lister = mydir.getAbsoluteFile();
System.out.println("Total files: " + lister.list().length);
for (String list : lister.list()) {
File f = new File(lister, list);
if (f.delete())
System.out.println(list + " is Deleted!");
else
System.out.println(list + " not deleted!");
}
它不起作用,f.delete返回false
我已经看过很多这样的问题,其中大多数建议使用delete()或getCanonicalFile().delete()。这根本不起作用
显示-
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
尝试此操作,这将删除
文件路径
目录下的所有文件
File file = new File(filePath);
if (file.isDirectory()) {
String[] children = file.list();
if (children != null) {
for (String aChildren : children) {
boolean isDelete = new File(file, aChildren).delete();
if (isDelete)
System.out.println(aChildren + " is Deleted!");
else
System.out.println(aChildren + " not deleted!");
}
}
}
尝试此操作,这将删除
filePath
目录下的所有文件
File file = new File(filePath);
if (file.isDirectory()) {
String[] children = file.list();
if (children != null) {
for (String aChildren : children) {
boolean isDelete = new File(file, aChildren).delete();
if (isDelete)
System.out.println(aChildren + " is Deleted!");
else
System.out.println(aChildren + " not deleted!");
}
}
}
不是答案,而是更健壮的代码:
File dir = Environment.getExternalStoragePublicDirectory("Download");
if ( !dir.canWrite() )
{
Toast.makeText(context, "Can not write in directory\n\n" + dir.getAbsolutePath(), Toast.LENGTH_LONG).show();
return;
}
File files [] = dir.listFiles();
if ( files==null )
{
Toast.makeText(context, "Could not listFiles() for\n\n" + dir.getAbsolutePath(), Toast.LENGTH_LONG).show();
return;
}
for ( File file : files)
{
if ( file.isDirectory())
continue;
if ( ! file.delete())
{
Toast.makeText(context, "Could not delete\n\n" + file.getAbsolutePath(), Toast.LENGTH_LONG).show();
break;
}
}
请尝试。不是答案,而是更健壮的代码:
File dir = Environment.getExternalStoragePublicDirectory("Download");
if ( !dir.canWrite() )
{
Toast.makeText(context, "Can not write in directory\n\n" + dir.getAbsolutePath(), Toast.LENGTH_LONG).show();
return;
}
File files [] = dir.listFiles();
if ( files==null )
{
Toast.makeText(context, "Could not listFiles() for\n\n" + dir.getAbsolutePath(), Toast.LENGTH_LONG).show();
return;
}
for ( File file : files)
{
if ( file.isDirectory())
continue;
if ( ! file.delete())
{
Toast.makeText(context, "Could not delete\n\n" + file.getAbsolutePath(), Toast.LENGTH_LONG).show();
break;
}
}
请尝试。修复了它
我的应用程序只请求用户的读取权限,而不是写入权限
删除任何文件都需要写入权限。所以我改读改写,成功了
if (ContextCompat.checkSelfPermission(MainActivity.this
, Manifest.permission.**WRITE**_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)
{
// ...
}
修好了
我的应用程序只请求用户的读取权限,而不是写入权限
删除任何文件都需要写入权限。所以我改读改写,成功了
if (ContextCompat.checkSelfPermission(MainActivity.this
, Manifest.permission.**WRITE**_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)
{
// ...
}
如果您使用的是M或更高版本的Android,您是否在运行时授予了权限?是的。授予权限后,代码将被执行。
System.out.println(列表+“已删除!”)代码>请给出一个记录内容的示例,您将看到。@blackapps f.delete()返回false。我要求您告诉我们记录的完整字符串。当然,您也可以告诉另一个。如果您使用的是M或更高版本的Android,您在运行时是否授予了权限?是的。授予权限后,代码将被执行。System.out.println(列表+“已删除!”)代码>请给出一个记录内容的示例,您将看到。@blackapps f.delete()返回false。我要求您告诉我们记录的完整字符串。当然,你也可以告诉另一个。isDelete是错误的。请在删除前打印日志添加此行log.e(“TAG”,“path=“+file+”-“+aChildren”)代码>并显示输出/TAG:path=/storage/simulated/0/Download-pg308-images.epub。。。。。。E/TAG:path=/storage/emulated/0/Download-LIBMG.pdfohk,更改此行并替换boolean isDelete=new File(File+“/”,aChildren).delete()代码>输出保持不变删除错误请在删除前打印日志添加此行log.e(“TAG”,“path=“+file+”-“+aChildren”)代码>并显示输出/TAG:path=/storage/simulated/0/Download-pg308-images.epub。。。。。。E/TAG:path=/storage/emulated/0/Download-LIBMG.pdfohk,更改此行并替换boolean isDelete=new File(File+“/”,aChildren).delete()代码>输出保持不变