Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 旧版本android上的android字符串数组nullpointerexception_Java_Android - Fatal编程技术网

Java 旧版本android上的android字符串数组nullpointerexception

Java 旧版本android上的android字符串数组nullpointerexception,java,android,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]); myFi

这段代码在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 studio显示初始值设定项“new String[100]”已被还原,错误未得到解决

为什么会发生这种情况


谢谢

的javadoc表示它可以返回null。无论何时调用它,您都应该检查它,并正确处理它,除非您绝对确定它不会返回null。

这是因为您没有检查文件夹是否为null或目录是否包含文件

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();
    }
}
File File=新文件(“/storage/simulated/0//Videos/”;
字符串[]myFiles;
if(file==null){
}否则{
myFiles=file.list();
对于(int i=0;i
如果要删除整个目录,可以使用此示例方法

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();
    }
}
public void delete目录(文件){
if(file.exists()){
if(file.isDirectory()){
File[]files=File.listFiles();

对于(int i=0;感谢您宝贵的回复,但我仍然收到相同的错误…电话:xperia u.我在zenfone 5上没有收到此错误,LG G3检查此路径/storage/simulated/0//Videos/因为某些设备使用storage0我尝试了3种不同的删除方法,但都不起作用..如果我尝试获取目录中的文件名,它不会显示出来…我有声明了读取和写入外部存储的权限。那么它可能是什么?或者file.list()方法不起作用吗?因为文件名不由System out.println()方法显示…?这也可能吗?
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();
    }
}