package com.softeem.iochar;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class Filecopy {
/**
* 将一个目标文件拷贝到一个指定目录中
* @param sourceFile 需要被拷贝的标准文件
* @param targetDir 文件存储的目标目录
*/
public void copy(File sourceFile,File targetDir){
InputStream is = null;
OutputStream os = null;
try {
//获取源文件的输入流
is = new FileInputStream(sourceFile);
//根据目标目录,结合源文件名称,构建一个新的file对象
File targetFile = new File(targetDir,sourceFile.getName());
//获取目标文件的输出流(如果目标文件不存在,则系统会自动创建,前提父目录一定存在)
os = new FileOutputStream(targetFile);
byte[] b = new byte[1024];//定义一个伪字节缓冲区
int len = 0;
System.out.println("准备开始拷贝:"+sourceFile.getAbsolutePath());
while((len = is.read(b)) != -1){
os.write(b,0,len);
}
System.out.println("拷贝完成:"+targetFile.getAbsolutePath());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
if(is != null)is.close();
if(os != null)os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void copyDir(File sourceDir,File targetDir){
targetDir = new File(targetDir,sourceDir.getName());
if(!targetDir.exists()){
if(targetDir.mkdirs()){
System.out.println(targetDir.getAbsolutePath()+" 目录创建成功");
}
}
//获取需要被拷贝的文件
File[] files = sourceDir.listFiles();
if(files != null){
for (File f:files) {
//判断目标File对象是目录还是标准文件
if(f.isDirectory()){
copyDir(f, targetDir);//递归目录拷贝
}else{
copy(f, targetDir);//递归文件拷贝
}
}
}
}
public static void main(String[] args) {
File dir1 = new File("C:\\larva搞笑虫子");
File dir2 = new File("C:\\User");
new Filecopy().copyDir(dir1, dir2);
}
}
字节流拷贝指定的文件及目录
最新推荐文章于 2021-03-14 16:43:57 发布
本文提供了一个使用Java实现文件及目录复制的示例程序。该程序通过递归方式复制整个目录结构及其包含的所有文件,并详细展示了如何使用FileInputStream和FileOutputStream进行字节流操作来完成文件复制。
摘要由CSDN通过智能技术生成