package com.itheima;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class TestCopy {
public static void main(String[] args) throws IOException {
//1.获取文件夹路径File对象 (G:\test\src)目标文件存放位置
File srcdir = new File("G:\\test\\src");
File[] files = srcdir.listFiles();
for (File file : files) {
//获取目标文件
String srcPath = file.getAbsolutePath(); //G:\test\src\aaa.txt
//2.获取目录名称
File targetfile = new File("G:\\test\\target");
//2.1提供一个集合
List<File> filesPathList = new ArrayList<File>();
//2.2获取所有目录对象,封装入集合中
getFilesPath(targetfile,filesPathList);//[G:\test\target, G:\test\target\aaa, G:\test\target\abc, G:\test\target\abc\d]
//3.复制文件
//3.1遍历集合
for (File targetFile : filesPathList) {
//转化
String absolutePath = targetFile.getAbsolutePath();//G:\test\target
//拼接复制位置文件名称
String targetpath = absolutePath+"\\"+file.getName(); //G:\test\target +"\"+aaa.txt
copy(srcPath,targetpath);
}
}
}
/**
* 递归查找目标File对象下的所有目录File对象
*
* @param targetfile 目标目录File对象
* @param targetFileslist 目标目录File对象 下的所有目录
* @return
*/
public static void getFilesPath(File targetfile, List<File> targetFileslist) {
//添加自身
targetFileslist.add(targetfile);
//获取目标目录下的所有文件和目录
File[] files = targetfile.listFiles();
//遍历文件找到目录
for (File file : files) {
//判断对象是目录File对象
if (file.isDirectory()) {
//如果是目录,则对用方法
getFilesPath(file, targetFileslist);
}
}
}
/**
*
* @param srcPath//原始文件的路径
* @param destPath//目标文件路径
* @throws IOException
*/
public static void copy(String srcPath,String destPath) throws IOException {
//[1]创建对象
FileInputStream fis = new FileInputStream(srcPath);
FileOutputStream fos = new FileOutputStream(destPath);
//[2]读写数据
int ch;
while((ch = fis.read())!=-1){
fos.write(ch);
}
//[3]释放资源
fis.close();
fos.close();
}
}
将任意文件复制到一个目录下的所有子目录中
最新推荐文章于 2024-07-04 20:06:34 发布