利用Java IO复制多级文件夹

package package1;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Copy {
        private static File newDest = null;
        private static FileInputStream fis = null;
        private static FileOutputStream fos = null;;
        /*
         * 拷贝一个多级文件夹,文件里包含音频和视频文件
         *
         * 1 因为源文件夹下包含各类文件,因此采用字节流读写
         * 2 不仅仅要复制文件,还要复制源文件夹,这里用到File类的构造函数在目标文件夹下创建同名同级文件夹
         * 3 这里要用到getName()方法来获取对应的文件夹或者文件名
         */
        public static void main(String[] args) throws IOException {
                // 源文件
                File  source = new File("C:\\java");
                //创建一个同名的一级目录
                File dest = new File("d:",source.getName());
                //创建目标文件夹
                if(!dest.exists())
                        dest.mkdir();
               
                copyFile(source,dest);
        }
        public static void copyFile(File source,File dest) throws IOException{
               
                File[] files = source.listFiles();
                for(File file : files){
                        //每次遍历时,都要在目标文件夹下创建同名同级文件夹或者文件
                        newDest = new File(dest,file.getName());
                        //打印遍历到的文件或者文件夹
                        System.out.println(newDest);
                        if(file.isDirectory()){
                                //如果遍历到的是文件夹,就在目标文件夹下创建同名同级文件夹
                                if(!newDest.exists())
                                        newDest.mkdir();
                                copyFile(file,newDest );
                        }
                        else{
                                //如果遍历到的是文件,就在目标文件夹下创建同名同级文件并写入
                                fis  = new FileInputStream(file);
                                fos  = new FileOutputStream(newDest);
                                byte[] buf = new byte[1024];
                                int len = 0;
                                while((len=fis.read(buf))!=-1){
                                        fos.write(buf,0,len);
                                        fos.flush();
                                }
                                fis.close();
                                fos.close();
                        }
                }
        }

}


一个可以复制C盘名为“java”的文件夹到D盘的程序,

试了一些,真的不错,先留着,之后再自己实现一个。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。