Java运行中的java.lang.NullPointerException异常
自己写了一个遍历文件夹下面所有文件的Java程序可是总是抛出异常,代码如下importjava.io.File;importjava.io.IOException;pub...
自己写了一个遍历文件夹下面所有文件的Java程序可是总是抛出异常,代码如下
import java.io.File;
import java.io.IOException;
public class traverse {
public static void tra(File path){
if(path == null){
return;
}
if(path.isDirectory()){
String[] files = path.list();
for(int i = 0; i < files.length;i++){
tra(new File(path,files[i]));
}
}else if(path.getAbsolutePath().endsWith(".mp3")){
System.out.println(path);
}
}
public static void main(String[] args) {
try{
File file = new File("D:\\");
tra(file);
}catch(Exception e){
e.printStackTrace();
}
}
}
这个异常并不是总是出现,而是已经打印出很多结果的时候会出现,为什么呢?
刚才有人和我说这是因为文件中有系统文件,不允许程序访问造成的,请问怎样才能避免呢? 展开
import java.io.File;
import java.io.IOException;
public class traverse {
public static void tra(File path){
if(path == null){
return;
}
if(path.isDirectory()){
String[] files = path.list();
for(int i = 0; i < files.length;i++){
tra(new File(path,files[i]));
}
}else if(path.getAbsolutePath().endsWith(".mp3")){
System.out.println(path);
}
}
public static void main(String[] args) {
try{
File file = new File("D:\\");
tra(file);
}catch(Exception e){
e.printStackTrace();
}
}
}
这个异常并不是总是出现,而是已经打印出很多结果的时候会出现,为什么呢?
刚才有人和我说这是因为文件中有系统文件,不允许程序访问造成的,请问怎样才能避免呢? 展开
展开全部
因为目录有可能是空目录,即目录下没有文件,所以path.list() 返回为null,所以需要在for循环前判断一下,加一句if(files!=null)就行了。完整的程序如下:
import java.io.File;
import java.io.IOException;
public class traverse {
public static void tra(File path){
if(path == null){
return;
}
if(path.isDirectory()){
String[] files = path.list();
if(files!=null) //这里加一句
for(int i = 0; i < files.length;i++){
tra(new File(path,files[i]));
}
}else if(path.getAbsolutePath().endsWith(".mp3")){
System.out.println(path);
}
}
public static void main(String[] args) {
try{
File file = new File("D:\\");
tra(file);
}catch(Exception e){
e.printStackTrace();
}
}
}
import java.io.File;
import java.io.IOException;
public class traverse {
public static void tra(File path){
if(path == null){
return;
}
if(path.isDirectory()){
String[] files = path.list();
if(files!=null) //这里加一句
for(int i = 0; i < files.length;i++){
tra(new File(path,files[i]));
}
}else if(path.getAbsolutePath().endsWith(".mp3")){
System.out.println(path);
}
}
public static void main(String[] args) {
try{
File file = new File("D:\\");
tra(file);
}catch(Exception e){
e.printStackTrace();
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询