老规矩,拿走评论。
求给个技术分,哇。伤脑子的东西。。- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- /*
- * 复制多级文件夹。
- * 思路:
- * 首先创建相同名字的文件夹及文件名字,不能考虑复制内容。
- * 创建完毕,读写当前的文件对象
- */
- public class Test5 {
- public static void main(String[] args) throws IOException {
- // 封装读取对象
- File file = new File("F:\\java");
- // 创建写入对象
- File file2 = new File("F:\\ja");
- copyFile(file, file2);
- }
- private static void copyFile(File yuan, File mu) throws IOException{
- if(yuan!=null){
- //判断传进来的源文件是不是文件夹
-
- if(yuan.isDirectory()){
- //是文件夹,那么判断目标目录是否存在,不存在就创建
- if(!mu.exists()){
- mu.mkdir();
- }
- //获取文件下所有对象名
- String [] files =yuan.list();
- //遍历
- for(String f :files){
- //递归并创建新的yuan,mu对象
- File yuanFile = new File(yuan,f);
- File muFile =new File(mu,f);
- copyFile(yuanFile,muFile);
-
- }
- //不是文件夹就是文件
- }else{
- //创建读写对象,将原文件内容读取到目标文件。保证能读取所有文件,使用高效字节流
- BufferedInputStream bis = new BufferedInputStream(new FileInputStream(yuan));
- BufferedOutputStream bos =new BufferedOutputStream(new FileOutputStream(mu));
- //基本做法,数组
- byte[] bys =new byte[1024];
- int len =0;
- while((len =bis.read(bys))!=-1){
- bos.write(bys,0,len);
- bos.flush();
- }
- bos.close();
- bis.close();
- }
-
- }}
- }
复制代码 |