package com.softeem.copy;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Copy2 {
/**
*
* @param source 源文件
* @param dir 目录
* @throws IOException
*/
public void fileCopy(File source ,File dir) throws IOException{
//根据目标目录结合源文件名构建新的目标FIle对象
//dir目录路径加上source文件名 产生新路径 然后Copy
File target = new File(dir,source.getName());
//创建一个缓冲输入流
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(source));
//创建一个缓冲输出流
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(target));
byte []b = new byte[1024];
int len=0;
while((len=bis.read(b))!= -1){
bos.write(b, 0, len);
}
bos.close();
bis.close();
}
public void dirCopy(File sourceDir,File targetDir) throws IOException{
//首先创建一个源文件夹
//如果递归回来 sourec 已经改变成子目录的名字
targetDir = new File(targetDir.getAbsolutePath(),sourceDir.getName());
if (!targetDir.exists()) {
//创建目录
targetDir.mkdir();
}
//获取源文件中的每一个文件
File []file = sourceDir.listFiles();
//如果源文件不为空
if(file!=null){
for (int i = 0; i < file.length; i++) {
//如果源文件中的文件是目录
if (file[i].isDirectory()) {
//递归调用自己 那个目录的名字加上自己的路径
dirCopy(file[i],targetDir);
}else{
//如果是文件就调用fileCopy方法复制到 file[i]+targetDir 路径下
fileCopy(file[i],targetDir);
}
System.out.println(targetDir+" "+file[i].getName());
}
}
}
public static void main(String[] args) throws IOException {
Copy2 c = new Copy2();
File f1 = new File("源文件地址");
File f2 = new File("拷贝地址");
c.dirCopy(f1, f2);
}
}
本文介绍了一个简单的文件和目录复制工具的实现方法。通过使用Java的缓冲输入输出流,该工具能够高效地将源文件或整个目录结构复制到指定的目标位置。
804

被折叠的 条评论
为什么被折叠?



