黑马程序员技术交流社区
标题:
递归遍历文件为何出错,求大神解答
[打印本页]
作者:
378657357
时间:
2016-9-2 22:10
标题:
递归遍历文件为何出错,求大神解答
package com.heima.test;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
//文件过滤筛选拷贝:把指定目录下(不包含子目录)的所有图片,复制到另一个指定目录下(使用文件过滤器来过滤图片)
public class Lianxi2 {
public static void main(String[] args) throws IOException {
System.out.println("请输入指定复制源文件夹路径:");
File file1 = getFile();
System.out.println("请输入指定存放文件夹路径:");
File file2 = getFile();
//用一个集合来存放符合拷贝文件的绝对路径
List<File> list = new ArrayList<>();
//寻找所有符合条件的文件并将路径存入集合
seek(file1,list);
//从集合读取文件路径,复制到新的文件夹路径
copy(file2,list);
System.out.println("复制文件数量:"+list.size());
}
private static void copy(File file2, List<File> list) throws IOException {
if (!list.isEmpty()) {
BufferedInputStream bts = null;
BufferedOutputStream bos = null;
for (File file : list) {
bts = new BufferedInputStream(new FileInputStream(file));
bos = new BufferedOutputStream(new FileOutputStream(file2));
int x;
while((x = bts.read()) != -1) {
bos.write(x);
}
bos.flush();
}
bts.close();
bos.close();
}
}
private static void seek(File file1, List<File> list) {
File[] filelist = file1.listFiles();
if (filelist != null) {
for (File file : filelist) {
if (file.isFile()
&& (file.getName().endsWith(".jpg")
|| file.getName().endsWith(".png"))
) {
// System.out.println(file.getAbsolutePath());
list.add(file);
}else if (file.isDirectory()) {
seek(file,list);
}
}
}else{
System.out.println("文件夹下为空,请检查后输入!");
}
}
private static File getFile() {
Scanner sc = new Scanner(System.in);
while(true) {
String line = sc.nextLine();
File file = new File(line);
if (!file.isDirectory()) {
System.out.println("非文件夹路径,请重新输入:");
}else{
System.out.println("文件夹路径输入成功!");
return file;
}
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2