用Java实现将多级文件夹下的所有文件统一放到一个文件夹中

时间:2022-11-10 09:57:04

每次下了电影(男生懂得呦),每部电影都放在一个单独的文件夹里,看的时候很是不方便啊,一直重复着进入文件夹、后退,再进、再退的操作,而手动把这些电影全部复制出来又太繁琐。因此为了解决这个问题,用IO写了一个小工具。

以下代码只实现了把多级文件夹下的所有文件复制到一个文件夹中,如果需要指定复制文件的格式,可以在1111处添加一个判断。如果需要同时删除原文件夹可以在添加一个递归删除的方法。

package Bao;

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 CopyFolderDemo {
public static void main(String[] args) throws IOException {
// 封装数据源File
File srcFile = new File("d:\\文件夹名字");    //这里填源文件夹路径

copyFolder(srcFile);
//copyFile(srcFile);
}

private static void copyFolder(File srcFile)
throws IOException {
// 判断该File是文件夹还是文件
File[] ff=srcFile.listFiles();
for(File f:ff){

//如果是文件夹,则递归调用
if(f.isDirectory()){
copyFolder(f);
}else{               ///11111

//如果是文件则复制
copyFile(f);
//System.out.println(f.getName());


}
}
}
//用字节缓冲流实现文件复制
private static void copyFile(File srcFile) throws IOException {

File destFile = new File("d:\\文件夹名字",srcFile.getName());   //这里写目的文件夹路径
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
srcFile));
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(destFile));

byte[] bys = new byte[1024];
int len = 0;
while ((len = bis.read(bys)) != -1) {
bos.write(bys, 0, len);
}

bos.close();
bis.close();
}
}