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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 爱吃小土豆 中级黑马   /  2014-12-4 11:14  /  1358 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  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. }
复制代码

大家帮我看看怎么回事啊,复制不成功,还没有提示错误!

9 个回复

倒序浏览
没有报错啊
回复 使用道具 举报
ゞWinzows_♫ 发表于 2014-12-4 11: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()+"拷贝完成");
                        }
                }
        }
回复 使用道具 举报

  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. }
复制代码
回复 使用道具 举报
回复 使用道具 举报
感谢感谢
回复 使用道具 举报
我也写了个,大家参考下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();
        }
}

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马