JAVA遍历指定文件夹获取指定文件,File类调用方法
该代码是使用File类来关联指定文件和文件夹,输入参数为需要遍历的文件夹。采用递归的方式,来遍历整个文件夹来获取指定文件。比如获得.pdf文件等。
其次就是使用文件输入流和输出流来对文件进行保存。下面给出代码,注意抛异常。
public static void getfiles(File file1) throws IOException {
File[] files = file1.listFiles();
for (File file : files) {
if (file.isFile()) {//判断是否文文件
if (file.getName().toLowerCase().endsWith(".pdf")) {//判断文件是否为pdf文件
System.out.println(file.getName());
FileInputStream fis = new FileInputStream(file);//关联读入文件
File dir = new File("D:\\wenJian");//创建保存的路径文件夹,自己可以选择合适的位置
if (!dir.exists()) {//文件夹不存在就自己创建
dir.mkdir();
}
FileOutputStream fos = new FileOutputStream(dir + "\\" + file.getName());//保存路径
byte[] b = new byte[1024];
int len;
while ((len = fis.read(b)) != -1) {
fos.write(b, 0, len);
}
fis.close();
fos.close();
}
} else {
getfiles(file);//是文件夹就递归遍历
}
}
}
JAVA还提供了一个过滤文件类FileFilter类,下面介绍另一种方法
使用FileFilter类,可以在File类创建实例的时候,调用其构造函数。过滤出选择的指定文件。其实File.listFiles方法在调用时,他会调用FileFilter中的抽像方法accept(),可以自己创建类继承FileFilter类,实现accept()方法,定义自己的过滤标准。
在这里,我是用 Lambda表达式写出想要的目标文件。当然,你也可以自己确定需要的的文件。
public static void getFiles(File file1) throws IOException {
File[] files = file1.listFiles(pathname -> pathname.isDirectory() || pathname.getName().toLowerCase().endsWith(".pdf") ||
pathname.getName().toLowerCase().endsWith(".md"));///获取.pdf文件和.md文件
for (File file : files) {
if (!file.isDirectory()) {//如果时文件,则保存
FileInputStream fis = new FileInputStream(file);
File dir = new File("J:\\heima");//创建保存的路径文件夹
if (!dir.exists()) {//文件夹不存在就自己创建
dir.mkdir();
}
FileOutputStream fos = new FileOutputStream("J:\\heima\\" + file.getName());//保存路径
byte[] b = new byte[1024];
int len;
while ((len = fis.read(b)) != -1) {
fos.write(b, 0, len);
}
fis.close();
fos.close();
System.out.println(file.getName());
} else {
getFiles(file);//递归遍历
}
}
}