package cn.itcast.test;
/*
* JAVA技术,实现单级文件夹复制
* 数据源 : c:\\demo
* 目的 : d:
*
* 操作文件夹 File类
* 复制文件,读取写入文件 IO流技术 纯字节流
*
* 实现步骤
* 1. 在数据目的创建出和数据源一样的文件夹名
* 获取到数据源的文件夹名 getName()
* new File("d:\\demo").mkdirs()
* d:\\File demo String
* 组成File对象,使用File父路径,字符串子路径
*
* 2. 复制文件,复制的数据源目录,复制到数据目的文件夹中
* FileInputStream(c:\\demo\\1.txt)
* FileOutputStream(d:\\demo\\1.txt)
*
* 遍历数据源文件夹,获取到文件夹中的文件
* 获取到数据源文件名
* 数据源的文件名,数据目的文件夹,组合File对象
*
* 3. IO纯字节流复制文件
*
*
*
*/
import java.io.*;
public class CopyDir {
public static void main(String[] args) {
copyDir(new File("c:\\demo"), new File("d:"));
}
/*
* 定义方法,实现文件夹复制
*/
public static void copyDir(File source,File targer){
//使用File对象方法getName获取数据源文件夹名字
String sourceDirName = source.getName();
// System.out.println(sourceDirName);
//将数据目的,和数据源文件夹名组成新的File对象
File newDirTarget = new File(targer, sourceDirName);
newDirTarget.mkdirs();
//遍历数据源文件夹
File[] sourceFiles = source.listFiles();
for(File f : sourceFiles){
//获取出数据源文件名
// System.out.println(f.getName());
//数据目的文件夹,数据源的文件名,组成新File对象
String sourceFileName = f.getName();
File newFileTarget = new File(newDirTarget, sourceFileName);
//调用copyFile方法,传递File对象
copyFile(f,newFileTarget);
}
}
/*
* 定义方法,实现文件复制
* IO流对象构造方法,都接收File对象
* 带异常处理
*/
public static void copyFile(File source,File target){
FileInputStream fis = null;
FileOutputStream fos = null;
try{
fis = new FileInputStream(source);
fos = new FileOutputStream(target);
byte[] bytes = new byte[1024];
int len = 0 ;
while((len = fis.read(bytes))!=-1){
fos.write(bytes, 0, len);
}
}catch(IOException ex){
throw new RuntimeException("文件夹复制失败");
}finally{
try{
if(fos!=null)
fos.close();
}catch(IOException ex){
throw new RuntimeException("资源关闭失败");
}finally{
try{
if(fis!=null)
fis.close();
}catch(IOException ex){
throw new RuntimeException("资源关闭失败");
}
}
}
}
}
|
|