有个需求,电脑里有个文件夹,文件夹里有着很多的子文件夹,分别记录了每天所写的一篇文章和一段录音,现在要将他们全部拷贝出来,放入一个指定的目录中。
主程序
package zx.javase.getpng;
import java.io.File;
import java.io.IOException;
public class Test {
private static File outputFile=new File("G:\\output");
private static File inputFile=null;
private static CopyFile copyFile=new CopyFile();
public static void listPath(File file) throws IOException{
File[] listFiles = file.listFiles(new MyFilenameFilter());
//遍历出指定路径下所有符合条件的文件
for(File f:listFiles){
if(f.isDirectory()){
listPath(f);
}else{
System.out.println(f);
//将f保存到另一个文件夹
System.out.println("===="+f.getAbsolutePath());
inputFile=new File(f.getAbsolutePath());
copyFile.copy1(inputFile,outputFile);
}
}
}
public static void main(String[] args) throws IOException {
File file = new File("G:\\BaiduYunDownload\\wj");
listPath(file);
}
}
文件名过滤
package zx.javase.getpng;
import java.io.File;
import java.io.FilenameFilter;
public class MyFilenameFilter implements FilenameFilter {
@Override
public boolean accept(File dir, String name) {
// 创建返回值
boolean flag = false;
// 定义筛选条件
// endWith(String str);判断是否以指定格式结尾
if(dir.isDirectory()){
flag=true;
}
if (name.toLowerCase().endsWith(".png")) {
flag = true;
} else if (name.toLowerCase().endsWith(".jpg")) {
flag = true;
}
return flag;
}
}
文件拷贝
package zx.javase.getpng;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFile {
public static void copy1(File inputFile,File outputFile) throws IOException{
FileInputStream fileInputStream = new FileInputStream(inputFile);
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
// FileOutputStream fileOutputStream = new FileOutputStream(outputFile);
FileOutputStream fileOutputStream = new FileOutputStream(new File(outputFile,inputFile.getName()));
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
int len=0;
while((len=bufferedInputStream.read())!=-1){
bufferedOutputStream.write(len);
}
bufferedInputStream.close();
bufferedOutputStream.close();
}
}