文件夹的复制


复制文件夹

从原文件夹中读取文件  赋值到文件夹副本中实际上就是复制文件到创建的文件夹副本中

1,从原文件夹中读取数据fs[i].isFile()  fs[i]文件的时候  直接复制

2     fs[i]是文件夹的时候首先创建子文件夹副本然后将原子文件夹内的文件复制到文件夹副本中

    子文件夹副本在上一级文件夹副本中  定义一个字符串存储文件路径

import java.io.*;
class copyDir
{
    String s = "jiang";//最外层目录路径
    String path = "jiang";//定义一个字符串存储文件路径
    public void readDir(File f,intlev) throws Exception//形参f代表的是原文件夹
    {
        lev++;
        if(lev == 1)
        {   
            s = f.getName();
            path =f.getPath().replaceAll(s,s+"副本"); 
            File dir = new File(path);
            dir.mkdir();
        }   
        //原文件中的数据
        File[] fs = f.listFiles();
        for (int i=0 ;i<fs.length;i++ )
        {
            if (fs[i].isFile())
            {
                path =fs[i].getParent().replaceAll(s,s+"副本");
                File fc = new File(path,fs[i].getName());
                //文件创建之前一定要保证路径存(文件所在的文件夹)在否则抛异常
                fc.createNewFile(); 
                //将文件复制到新文件中
                BufferedInputStreambis = new BufferedInputStream(new FileInputStream(fs[i]));
                BufferedOutputStreambos = new BufferedOutputStream(new FileOutputStream(fc));
                byte[] buf = newbyte[1024];
                int len=0;
                while((len=bis.read(buf))!=-1)
                {
                    bos.write(buf,0,len);
                }
                bos.close();
                bis.close();
            
            }       
            //是文件夹的话  创建文件夹副本
            if (fs[i].isDirectory())
            {
                path = fs[i].getPath().replaceAll(s,s+"副本");;
                File dir = newFile(path);
                //创建文件夹
                dir.mkdir();
                readDir(fs[i],lev);
            }   
        }
    }
    public static void main(String[]args) throws Exception
    {
        File f = newFile("F:\\0123/0000");
        new copyDir().readDir(f,0);
        
    }