将 F:\\FileTest文件夹中的所有文件复制到F:\\newFileTest文件夹
一、分析
1.定义一个File关联到对应的文件夹F:\\FileTest
File srcfile = new File("F:\\FileTest");
File descFiledir = new File("F:\\newFileTest");
2.判断新文件存不存在,若不存在则新建;存在则开始复制
if (!descFiledir.exists()){
descFiledir.mkdir();
}
3.遍历原始目录 取出.jpg/.txt/.doc 文件 存储到一个文件集合中
使用匿名内部类筛选
File[] listFile = null;
if (srcfile.exists()&&srcfile.isDirectory()) {
//5.获得jpg 文件 存储到集合中
listFile=srcfile.listFiles(new FileFilter() {
@Override
public boolean accept(File fileFilter) {
String fileName = fileFilter.getName();
System.out.println("文件名:"+fileName);
String lastName = fileName.substring(fileName.lastIndexOf(".")+1);
return "jpg".equals(lastName);
}
});
}else {
System.out.println("原始目录不存在或不是目录.....");
}
4.文件复制
for (File fileSrc : listFile) {
File descFile = new File(descFiledir,fileSrc.getName());
copy(fileSrc,descFile);
}
二、完整代码如下:
public static void main(String[] args) throws IOException {
//1.定义一个File关联到对应的文件夹C:\abc
File srcfile = new File("F:\\FileTest");
File descFiledir = new File("F:\\newFileTest");
if (!descFiledir.exists()){
// 3.不存在 构建目录
descFiledir.mkdir();
}
// 4. 遍历原始目录 取出.jpg 文件 存储到一个文件集合中
File[] listFile = null;
if (srcfile.exists()&&srcfile.isDirectory()) {
//5.获得jpg 文件 存储到集合中
listFile=srcfile.listFiles(new FileFilter() {
@Override
public boolean accept(File fileFilter) {
String fileName = fileFilter.getName();
System.out.println("文件名:"+fileName);
String lastName = fileName.substring(fileName.lastIndexOf(".")+1);
return "jpg".equals(lastName);
}
});
}else {
System.out.println("原始目录不存在或不是目录.....");
}
//6.开始文件复制
for (File fileSrc : listFile) {
File descFile = new File(descFiledir,fileSrc.getName());
copy(fileSrc,descFile);
}
}
copy方法如下:
public static void copy(File path1,File path2){
try {
BufferedInputStream bfis = new BufferedInputStream(new FileInputStream(path1));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(path2));
int len ;
byte[] bytes = new byte[4096*1024];
while ((len=bfis.read())!=-1) {
bos.write(bytes,0,len);
}
bfis.close();
bos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
三、运行结果: