写了个Java程序,遍历C盘所有.exe文件,但是递归的时候出现越界操作(nullpointerException)具体程序如下
importjava.io.File;publicclassFilePractise{/***@paramargs*/publicstaticvoidmain(Strin...
import java.io.File;
public class FilePractise {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
FilePractiseL fPra =new FilePractiseL();//文件提取类声明
File f = new File("C:\\Windows");
fPra.listExe(f);//.exe_文件提取
fPra.listDir(f);//目录提取
}
}
import java.io.File;
import java.io.FilenameFilter;
public class FilenameFiterE1 implements FilenameFilter{//文件过滤器接口实现,
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return name.indexOf(".exe")!=-1;//当文件为.exe_时,返回true
}
}
import java.io.File;
import java.io.FilenameFilter;
public class FilenameFilterE2 implements FilenameFilter{//文件过滤器接口实现,
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return !(name.indexOf(".")!=-1);//单文件为目录时,返回true
}
}
import java.io.File;
public class FilePractiseL {
public FilePractiseL(){}
public void listExe(File f){//显示.exe_文件
FilenameFiterE1 f1 = new FilenameFiterE1();//.exe_文件过滤接口
String[] names = f.list(f1);
System.out.println(names.length);
for(int i = 0;i < names.length;i++){//循环显示.exe_文件路径名
System.out.println(f.getAbsolutePath()+"\\"+names[i]);
}
}
public void listDir(File f){//显示子目录名称
FilenameFilterE2 f2 = new FilenameFilterE2();//目录过滤接口
String[] names1 = f.list(f2);
System.out.println(names1.length);
for(int i = 0;i < names1.length;i++){//循环显示子目录路径名
File dir = new File(f.getAbsoluteFile()+"\\"+names1[i]);
// System.out.println(names1[i]);
listExe(dir);
listDir(dir);//问题出在这两个递归上面,但是我实在不知道哪里出错了
System.out.println(dir.getAbsolutePath());
}
}
}
求高手帮忙解决! 展开
public class FilePractise {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
FilePractiseL fPra =new FilePractiseL();//文件提取类声明
File f = new File("C:\\Windows");
fPra.listExe(f);//.exe_文件提取
fPra.listDir(f);//目录提取
}
}
import java.io.File;
import java.io.FilenameFilter;
public class FilenameFiterE1 implements FilenameFilter{//文件过滤器接口实现,
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return name.indexOf(".exe")!=-1;//当文件为.exe_时,返回true
}
}
import java.io.File;
import java.io.FilenameFilter;
public class FilenameFilterE2 implements FilenameFilter{//文件过滤器接口实现,
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return !(name.indexOf(".")!=-1);//单文件为目录时,返回true
}
}
import java.io.File;
public class FilePractiseL {
public FilePractiseL(){}
public void listExe(File f){//显示.exe_文件
FilenameFiterE1 f1 = new FilenameFiterE1();//.exe_文件过滤接口
String[] names = f.list(f1);
System.out.println(names.length);
for(int i = 0;i < names.length;i++){//循环显示.exe_文件路径名
System.out.println(f.getAbsolutePath()+"\\"+names[i]);
}
}
public void listDir(File f){//显示子目录名称
FilenameFilterE2 f2 = new FilenameFilterE2();//目录过滤接口
String[] names1 = f.list(f2);
System.out.println(names1.length);
for(int i = 0;i < names1.length;i++){//循环显示子目录路径名
File dir = new File(f.getAbsoluteFile()+"\\"+names1[i]);
// System.out.println(names1[i]);
listExe(dir);
listDir(dir);//问题出在这两个递归上面,但是我实在不知道哪里出错了
System.out.println(dir.getAbsolutePath());
}
}
}
求高手帮忙解决! 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询