此代码适用于android 4.4,5.0,5.1,6.0
File file = new File("/storage/emulated/0//Videos/");
String[] myFiles;
myFiles = file.list();
for (int i = 0; i < myFiles.length; i++) {
File myFile = new File(file, myFiles[i]);
myFile.delete();
}
但是当我在Android 4.0,4.1,4.2中使用它时,我会在行引用java.lang.NullPointerException
for (int i = 0; i < myFiles.length; i++)
所以我尝试初始化String,
String[] myFiles = new String[100] //just big value
但android studio显示初始化程序“new String [100]”是redundent并且错误未解决。
为什么会这样?
谢谢..!
答案 0 :(得分:1)
File.list()的javadoc表示它可以返回null。每当你调用它并正确处理它时,你应该总是检查它,除非你绝对确定它不会返回null。
答案 1 :(得分:0)
这是因为您没有检查您的文件夹是否为空或确保您的目录包含文件
File file = new File("/storage/emulated/0//Videos/");
String[] myFiles;
if (file == null) {
} else {
myFiles = file.list();
for (int i = 0; i < myFiles.length; i++) {
File myFile = new File(file, myFiles[i]);
if(myFile.exists())
myFile.delete();
}
}
如果你想删除整个目录,你可以使用这个样本方法
public void deleteDirectory(File file) {
if( file.exists() ) {
if (file.isDirectory()) {
File[] files = file.listFiles();
for(int i=0; i<files.length; i++) {
if(files[i].isDirectory()) {
deleteDirectory(files[i]);
}
else {
files[i].delete();
}
}
}
file.delete();
}
}