package cn.lg.fileCopy;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 需求:复制多极文件夹
*
* 数据源:/Users/L/Desktop/JAVA基础视频/day01
* 目的地:/Users/L/Desktop/书籍/123
*
* 分析:(只能使用字节流)
* A:封装数据源File
* B:封装目的地File
* C:判断该File是文件夹还是文件
* a:是文件夹
* 就在目的地目录下创建该文件夹
* 获取该File对象下的所有文件或者文件夹File对象
* 遍历得到每一个File对象
* 回到C
* b:是文件
* 就复制(字节流)
* @author L
* @date 2017年3月15日 下午7:09:48
*
*/
public class CopyFoldersDemo {
public static void main(String[] args) throws IOException{
long start = System.currentTimeMillis();
File srcFile = new File("/Users/L/Desktop/JAVA基础视频/day01");
File targetFile = new File("/Users/L/Desktop/书籍/123");
CopyFolder(srcFile,targetFile);
long end = System.currentTimeMillis();
System.out.println("copy文件夹结束,总共耗时:"+(end - start)+" 毫秒!");
}
/**
* 复制目录下所有的文件
* @param srcFile
* @param newFile
* @throws IOException
*/
private static void CopyFolder(File srcFile, File targetFile) throws IOException {
//判断srcFile是否是文件夹
if (srcFile.isDirectory()) {
//文件夹
File newFolder = new File(targetFile,srcFile.getName());//在newFile文件夹下创建新的文件夹
newFolder.mkdir();//创建文件夹
//获取File对象下的所有文件或者文件夹的File对象
File[] files = srcFile.listFiles();
for(File file:files){
CopyFolder(file, newFolder);
}
}else {
//文件
File newFile = new File(targetFile,srcFile.getName());
copyFiles(srcFile, newFile);
}
}
/**
* 复制单个文件到指定目录
* @param file
* @param newFolder
* @throws IOException
*/
private static void copyFiles(File file, File newFile) throws IOException {
BufferedInputStream br = new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream bw = new BufferedOutputStream(new FileOutputStream(newFile));
byte[] bys= new byte[1024];
int len = 0;
while ((len=br.read(bys))!=-1) {
bw.write(bys,0,len);
}
br.close();
bw.close();
}
}
Java复制多极文件夹
最新推荐文章于 2022-09-15 15:32:41 发布