黑马程序员技术交流社区

标题: 文件夹复制问题,求解 [打印本页]

作者: 爱吃小土豆    时间: 2014-12-4 11:14
标题: 文件夹复制问题,求解

  1. import java.io.BufferedInputStream;
  2. import java.io.BufferedOutputStream;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileNotFoundException;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;

  8. public class Test4 {

  9.         /**
  10.          * @param args
  11.          * 代码实现c盘某个文件夹复制到D盘中,加上代码,加上注释,加上思路;
  12.          * @throws IOException
  13.          */
  14.         public static void main(String[] args) throws IOException {
  15.                 File orig=new File("C:\\Test\\a");
  16.                 File dest=new File("D:\\Test2\\b");
  17.                 copy(orig,dest);
  18.         

  19.         }
  20.         public static void copy(File orig,File dest) throws IOException{
  21.                 if (!orig.exists()) {
  22.                         System.out.println("原文件不存在");
  23.                         return ;
  24.                 }if (!dest.exists()) {
  25.                         dest.mkdir();
  26.                 }if (!dest.isDirectory()) {
  27.                         dest.mkdir();
  28.                 }
  29.                 File[] files = orig.listFiles();
  30.                 for (File file : files) {
  31.                         if (dest.isDirectory()) {
  32.                         File dest1=new File(dest+"\\"+file.getName());
  33.                                 copy(file,dest);
  34.                         }else {
  35.                                 BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file));
  36.                                 BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(dest+"\\"+file.getName()));
  37.                                 int b;
  38.                                 while ((b=bis.read()) !=-1) {
  39.                                         bos.write(b);
  40.                                 }
  41.                                 bis.close();
  42.                                 bos.close();
  43.                                 System.out.println(file.getName()+"拷贝完成");
  44.                         }
  45.                 }
  46.         }

  47. }
复制代码

大家帮我看看怎么回事啊,复制不成功,还没有提示错误!
作者: 爱吃小土豆    时间: 2014-12-4 11:25
没有报错啊
作者: 爱吃小土豆    时间: 2014-12-4 11:30
ゞWinzows_♫ 发表于 2014-12-4 11:25
报错提示什么了啊?

没有报错 也没有输出“拷贝成功”那条语句
作者: 惠惠惠惠惠    时间: 2014-12-4 14:42
感觉好难啊 。
作者: quick3g    时间: 2014-12-4 15:25
本帖最后由 quick3g 于 2014-12-4 15:26 编辑

public static void copy(File orig,File dest) throws IOException{
                if (!orig.exists()) {
                        System.out.println("原文件不存在");
                        return ;
                }if (!dest.exists()) {
                        dest.mkdir();
                }if (!dest.isDirectory()) {
                        dest.mkdir();
                }
                File[] files = orig.listFiles();
                for (File file : files) {
                        if (file.isDirectory()) {//你这里的条件错了,不是:if (dest.isDirectory())
                        File destDir=new File(file+"\\"+file.getName());
                                copy(file,destDir);//还有这里
                        }else {
                                BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file));
                                BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(dest+"\\"+file.getName()));
                                int b;
                                while ((b=bis.read()) !=-1) {
                                        bos.write(b);
                                }
                                bis.close();
                                bos.close();
                                System.out.println(file.getName()+"拷贝完成");
                        }
                }
        }
作者: 李天富    时间: 2014-12-4 16:03

  1. import java.io.BufferedInputStream;
  2. import java.io.BufferedOutputStream;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileNotFoundException;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;

  8. public class Test4 {

  9.         /**
  10.          * @param args
  11.          * 代码实现c盘某个文件夹复制到D盘中,加上代码,加上注释,加上思路;
  12.          * @throws IOException
  13.          */
  14.         public static void main(String[] args) throws IOException {
  15.                 File orig=new File("C:\\Test\\a");
  16.                 File dest=new File("D:\\Test2\\b");
  17.                 copy(orig,dest);
  18.         

  19.         }
  20.         public static void copy(File orig,File dest) throws IOException{
  21.                 if (!orig.exists()) {
  22.                         System.out.println("原文件不存在");
  23.                         return ;
  24.                 }
  25.                                 if (!dest.exists()||!dest.isDirectory()) {
  26.                         dest.mkdirs();//创建多级目录要用mkdirs().
  27.                 }
  28.                                 File f = new File(dest.getPath()+"\\"+orig.getName());//在目的目录下创建一个与待复制文件夹同名的目录。
  29.                                 f.mkdir();
  30.                                
  31.                 File[] files = orig.listFiles();
  32.                 for (File file : files) {
  33.                         if (file.isDirectory()) {
  34.                         
  35.                                 copy(file,f);
  36.                         }else {
  37.                                 BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file));
  38.                                                                 //获取路径的字符串形式用getPath();
  39.                                 BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(f.getPath()+"\\"+file.getName()));
  40.                                 int b;
  41.                                 while ((b=bis.read()) !=-1) {
  42.                                         bos.write(b);
  43.                                 }
  44.                                 bis.close();
  45.                                 bos.close();
  46.                                 System.out.println(file.getName()+"拷贝完成");
  47.                         }
  48.                 }
  49.                                
  50.         }

  51. }
复制代码

作者: 爱吃小土豆    时间: 2014-12-4 16:55
李天富 发表于 2014-12-4 16:03

厉害厉害厉害
作者: 爱吃小土豆    时间: 2014-12-4 16:56
感谢感谢
作者: 逍遥小seng    时间: 2014-12-5 01:09
我也写了个,大家参考下public class Test33 {

        public static void main(String[] args) throws Exception{
                // TODO Auto-generated method stub
                File res= new File("E:\\1");
                File des = new File("F:");
                copyFile(res,des);
       
        }
        public static void copyFile(File res,File des) throws IOException
        {
                if(!des.isDirectory())
                        throw new RuntimeException("非法文件路径");
                if(res.isDirectory())
                {
                        File creatFile = new File(des.getAbsolutePath(),res.getName());
                        creatFile.mkdir();
                        File[] files = res.listFiles();
                        for(File file : files)
                        {
                                if(file.isDirectory())
                                {
                                        copyFile(file,creatFile);
                                }
                                else
                                        copyTxt(file,new File(creatFile,file.getName()));
                        }       
                }
                else
                        copyTxt(res,new File(des,res.getName()));
        }
        public static void copyTxt(File res,File des) throws IOException
        {
                BufferedReader bufr = new BufferedReader(new FileReader(res));
                BufferedWriter bufw = new BufferedWriter(new FileWriter(des));
                String line = null;
                while((line=bufr.readLine())!=null)
                {
                        bufw.write(line);
                        bufw.newLine();
                        bufw.flush();
                }
                bufr.close();
                bufw.close();
        }
}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2