无法从内部存储文件夹中删除文件
Can't delete files from internal storage folder
我想删除下载文件夹中的所有文件
我正在尝试这种方法 -
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。
我已经在SO上看了很多这样的问题,大多数建议使用delete()或getCanonicalFile().delete()。这是行不通的。
清单-
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
试试这个,这将删除 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;
}
}
请尝试。
已修复。
我的应用只请求用户读取权限,而不是写入权限。
删除任何文件都需要 WRITE 权限。所以我将 READ 更改为 WRITE,它成功了!
if (ContextCompat.checkSelfPermission(MainActivity.this
, Manifest.permission.**WRITE**_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)
{
// ...
}
我想删除下载文件夹中的所有文件
我正在尝试这种方法 -
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。
我已经在SO上看了很多这样的问题,大多数建议使用delete()或getCanonicalFile().delete()。这是行不通的。
清单-
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
试试这个,这将删除 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;
}
}
请尝试。
已修复。
我的应用只请求用户读取权限,而不是写入权限。
删除任何文件都需要 WRITE 权限。所以我将 READ 更改为 WRITE,它成功了!
if (ContextCompat.checkSelfPermission(MainActivity.this
, Manifest.permission.**WRITE**_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)
{
// ...
}