空指针异常的错误,大伙帮我看看
代码如下package cn.xiaohong;
import java.io.File;
public class DiGuiFile {
public static void main(String[] args) {
File srcFile = new File("E:/");
searchFile(srcFile);
}
private static void searchFile(File srcFile) {
if (srcFile.isFile()) {
if (srcFile.getAbsolutePath().endsWith(".jpg")) {
System.out.println(srcFile.getAbsolutePath());
}
} else {
File[] files = srcFile.listFiles();
for (File f : files) {
searchFile(f);
}
}
}
}
报错如下:
Exception in thread "main" java.lang.NullPointerException
at cn.xiaohong.DiGuiFile.searchFile(DiGuiFile.java:19)
at cn.xiaohong.DiGuiFile.searchFile(DiGuiFile.java:20)
at cn.xiaohong.DiGuiFile.searchFile(DiGuiFile.java:20)
at cn.xiaohong.DiGuiFile.main(DiGuiFile.java:9)
我看不出哪里错了,大伙帮我看看 你这是什么语言的代码啊啊。。 mariomm 发表于 2018-3-5 10:59
你这是什么语言的代码啊啊。。
Java 你需要在
for (File f : files) {
searchFile(f);
}
这段代码外面加一个为空判断
if(files != null){
for (File f : files) {
searchFile(f);
}
} achun 发表于 2018-3-5 15:56
你需要在
for (File f : files) {
searchFile(f);
我试了下, 你的方法是可以的,非常厉害
我刚看了下,这个方法listFiles()返回的是文件和目录,如果目录为空,所以数组就是空的,所以是空指针异常是吗?但是我try...catch...貌似也是可以的
代码:
package cn.xiaohong;
import java.io.File;
public class DiGuiFile2 {
public static void main(String[] args) {
File srcFile = new File("E:/");
searchFile(srcFile);
}
private static void searchFile(File srcFile) {
if (srcFile.isFile()) {
if (srcFile.getAbsolutePath().endsWith(".jpg")) {
System.out.println(srcFile.getAbsolutePath());
}
} else {
try{
File[] files = srcFile.listFiles();
for (File f : files) {
searchFile(f);
}
}catch (Exception e){
}
}
}
}
若余相思 发表于 2018-3-5 18:41
我试了下, 你的方法是可以的,非常厉害
我刚看了下,这个方法listFiles()返回的是文件和目录,如果目 ...
你加异常处理,那么后面的流程都结束了,要是1、E:/test1/test2/test3;2、E:/test1/test2/test4/test.txt;3、E:/test1/test2/test5;4、E:/test1/test2/test6/test.txt。假如是这种,如果你加trycatch,那么你在得到test3的时候就抛出了异常,那后面没有异常的test4、test6文件夹就不能处理了,所以最好的解决办法应该在外面加一个不为空的条件判断 achun 发表于 2018-3-6 09:01
你加异常处理,那么后面的流程都结束了,要是1、E:/test1/test2/test3;2、E:/test1/test2/test4/test.tx ...
有这种情况吗?你能举个例子给我看看吗?我没有做过开发,不是很能理解。 你就按我上面的方法建几个目录和文件就可以了,然后运行你的代码就可以看到效果,然后再 把代码改成我说的那样再运行一遍,你就可以看到效果
页:
[1]