A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© glbai 中级黑马   /  2014-8-30 07:09  /  1842 人查看  /  10 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

自己写的拷贝多级文件夹的小程序

import java.io.*;
import java.util.*;
class CopyFileDir
{
        public static void main(String[] args)
        {
                String str1="E:\\remove";
                String str2="D:\\remove";
                copyFileDir(str1,str2);
        }
        public static void copyFileDir(String src,String des)
        {
                File srcFile=new File(src);
                File desFile=new File(des);

                if(!srcFile.exists())
                        return;
                if(!desFile.exists())
                        desFile.mkdirs();
                File[] files=srcFile.listFiles();
                for(File file:files)
                {
                        if(file.isDirectory())
                                copyFileDir(file.getPath(),des+File.separator+file.getName());
                }
        }
}


点评

你这只能复制文件夹。文件夹里的文件都没有复制。再好好改善吧  发表于 2014-8-30 11:09

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 注释咋没有呢

查看全部评分

10 个回复

正序浏览
坤儿 发表于 2014-8-30 15:15
我也写了一个 能复制文件夹的小demo(包括文件夹中的文件)
public static void main(String[] args) throw ...

学习了,很不错!
回复 使用道具 举报
坤儿 中级黑马 2014-8-30 15:15:22
9#
我也写了一个 能复制文件夹的小demo(包括文件夹中的文件)
public static void main(String[] args) throws IOException {
                // TODO Auto-generated method stub

                //File f1 = new File("a.txt");
                //File f2 = new File("c:\\","a.txt");
                //File f2 = new File("a123.txt");
                //和输出流不一样,如果文件不存在则创建,如果存在就不创建
                //boolean b = f2.createNewFile();//必须调用creat方法创建文件夹
//               
//                 File dir = new File("ada\\d\\s");
//                 dir.mkdirs();
//                 dir.delete();
                //renameDemo();
               
                //System.out.println(b);
                File f = new File("dirdemo");
                copdirdemo(f,"G:\\eclipse4.4\\项目存储\\");
                //System.out.println(f.mkdirs());
               
               
        }
       
        public static void copdirdemo(File f,String destpath) //拷贝文件夹
        {
          
            String desDirPath =  destpath+f.getName();//创建新文件夹的位置
            File  dir = new File(desDirPath);
            dir.mkdirs();//创建多级目录
            File[] flies = f.listFiles();
            for(File f1 :flies)
            {
                    if(f1.isDirectory())
                    {
                            copdirdemo(f1,dir.getAbsolutePath()+File.separator);
                    }
                    else//是文件就拷贝文件
                    {
                            FileOutputStream fos = null;
                            FileInputStream fis =  null;
                            try//拷贝时还需判断是否是文本文件
                            {
                                    fis = new FileInputStream(f1);
                                    File f2 = new File(dir.getAbsolutePath()+File.separator+f1.getName());
                                    f2.createNewFile();
                                    fos = new FileOutputStream(f2);
                                   
                                    byte[] buf = new byte[1024];
                                   
                                    int num =0;
                                    while((num = fis.read(buf))!=-1)
                                    {
                                            fos.write(buf, 0, num);
                                            fos.flush();
                                    }
                                   
                            }catch(IOException e)
                            {
                                   
                            }finally
                            {
                                    if(fis != null)
                                try {
                                                fis.close();
                                        } catch (IOException e) {
                                                // TODO Auto-generated catch block
                                                e.printStackTrace();
                                        }       
                                    if(fos !=null)
                                    {
                                            try {
                                                        fos.close();
                                                } catch (IOException e) {
                                                        // TODO Auto-generated catch block
                                                        e.printStackTrace();
                                                }
                                    }
                                   
                            }
       
                    }

            }
       
        }
回复 使用道具 举报
Faith- 中级黑马 2014-8-30 14:00:49
8#
怀念黑海岸 发表于 2014-8-30 12:06
这个程序功能应该是创建与源文件夹目录树相同的目的文件夹目录。这是复制文件夹的最麻烦地方,完成这 ...

是我理解错了
回复 使用道具 举报
Faith- 发表于 2014-8-30 10:30
这个只能拷贝文件夹,而文件夹里面的内容是不能拷贝的

    这个程序功能应该是创建与源文件夹目录树相同的目的文件夹目录。这是复制文件夹的最麻烦地方,完成这个功能后复制文件夹里的内容还不是分分钟的事情么
回复 使用道具 举报
你这个没有复制文件夹中的文件啊。
回复 使用道具 举报
myzhang 来自手机 中级黑马 2014-8-30 10:37:28
报纸
表示没看懂。。基础还是不行啊!
回复 使用道具 举报
这个只能拷贝文件夹,而文件夹里面的内容是不能拷贝的
回复 使用道具 举报
这个不错,如果有黑马币 就给你几个了
回复 使用道具 举报
mark,楼主好人
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马