下面代码是:建立指定文件的清单文件。 将指定目录下的指定文件(包含子目录)的绝对路径写入到一个文件中。 该文件就作为指定文件的清单文件。 例如:获取一个想要的指定文件的集合。获取javase_avi下(包含子目录)的所有的.avi 的文件对象。并存储到集合中。
问题是:我如果想获取整个e盘中的.avi 文件,而不是某一文件夹的,应该怎么修改下面程序呢?
如果是修改File dir = new File("e:\\javase_avi"); 为 File dir = new File("e:\\");为什么会报错:java.lang.NullPointerException
请高手作答,谢谢!!
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileFilter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) throws IOException {
File dir = new File("e:\\javase_avi");
List<File> list = fileList(dir, ".avi");
File destFile = new File("avilist.txt");
write2File(list, destFile);
}
public static void write2File(List<File> list, File destFile) throws IOException {
//1,需要流对象,既然是写入字符。
BufferedWriter bufw = null;
try{
bufw = new BufferedWriter(new FileWriter(destFile));
//2,遍历集合。
for(File file : list){
bufw.write(file.getAbsolutePath());
bufw.newLine();
bufw.flush();
}
}finally{
if(bufw!=null){
try {
bufw.close();
} catch (IOException e) {
throw new RuntimeException("关闭失败");
}
}
}
}
/**
* 定义一个获取指定过滤器条件的文件的集合。
*/
public static List<File> fileList(File dir, String suffix) {
// 1,定义集合。
List<File> list = new ArrayList<File>();
// 2,定义过滤器。
FileFilter filter = new FileFilterBySuffix(suffix);
getFileList(dir, list, filter);
return list;
}
public static void getFileList(File dir, List<File> list, FileFilter filter) {