Java 旧版本android上的android字符串数组nullpointerexception
这段代码在android 4.4、5.0、5.1、6.0上运行良好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
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();
}
}