import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/*
* 需求:复制多级文件
* 思路:使用File关联源文件和目的文件,目的文件和源文件名一样,只是盘路径不一样
* 定义一个方法,接受的参数是源文件和目的文件
* 使用listFiles方法,将源文件存入File数组中
* 使用高级for遍历File数组,
* 在遍历过程中,每次遍历关联不同路径下的同级目录文件或者文件夹
* 判断遍历的文件是否是目录
* 如果是,同级文件创建文件夹
* 使用递归,调用函数本身,参数是遍历的文件和同级目录文件
* 如果不是,判断是否存在此文件,如果不存在,创建文件
* 因为可能不是纯文本,使用字节流读取操作文件,记得关闭底层资源
*/
public class Copy_1
{
public static void main(String[] args) throws IOException
{
File source = new File("G:\\a - 副本");
File dest = new File("d:", source.getName());
if(!dest.exists())//这一步必须要有,否则系统出错-“系统找不到指定路径”
{
dest.mkdir();
}
copyFile(source, dest);
}
private static void copyFile(File source, File dest) throws IOException
{
File[] files = source.listFiles();
for(File file : files)
{
System.out.println(file);
File newFile = new File(dest, file.getName());
if(file.isDirectory())
{
if(!newFile.exists())
{
newFile.mkdir();
}
copyFile(file, newFile);
}else
{
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(newFile);
byte[] bt = new byte[1024];
int len = 0;
while((len=fis.read(bt))!=-1)
{
fos.write(bt, 0, len);
}
fis.close();
fos.close();
}
}
}
}
|