旧的Android版本

时间:2016-03-10 07:45:49

标签: java android

此代码适用于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并且错误未解决。

为什么会这样?

谢谢..!

2 个答案:

答案 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();
    }
}