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

© zl78365336 中级黑马   /  2013-12-6 20:41  /  1272 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 zl78365336 于 2013-12-6 23:09 编辑

代码错在哪里了,该怎么改?


  1. import java.io.*;

  2. public class CopyFilesTest {
  3.         public static void main(String[] args) throws Exception {
  4.                 File src = new File("e:/zz");
  5.                 File des = new File("e:/zl");
  6.                 showDir(src);
  7.         }

  8.         public static void showDir(File dir) {

  9.                 File[] files = dir.listFiles();
  10.                 for(int x=0;x<files.length;x++){
  11.                         if(files[x].isDirectory())//判断是否为文件夹
  12.                                 showDir(files[x]);//是文件夹,递归
  13.                         else
  14.                                 copyFiles(files[x],des);
  15.                 }
  16.         }
  17.         private static void copyFiles(File src,File des)throws Exception {
  18.                 //定义缓冲读流
  19.                 BufferedInputStream in = new BufferedInputStream(new FileInputStream(src));
  20.                 BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(des));               

  21.                 int by = 0;
  22.                 while((by=in.read())!=-1){
  23.                         out.write(by);
  24.                 }
  25.                 in.close();
  26.                 out.close();
  27.         }
  28. }




复制代码

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

3 个回复

正序浏览
用什么方式来完善这个程序呢?
回复 使用道具 举报
你的问题是想把一个文件夹目录下的东东拷贝到另一个文件夹下;但是你的CopyFiles中流对象只能关联具体的文件,而不能是文件夹!
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(des));
这个des应该是文件而不是文件夹
回复 使用道具 举报
第18行,copyFiles(files[x],des);  des从哪儿来,你在第11行定义 showDir(File dir) 时,形参列表里是没有des。这个问题解决了,而且 也确实存在e:/zz ,编译运行时不会有问题的。不过,你要把 e:/zz 下的文件夹或者文件都复制到e:/zl下,z1又是什么格式的呢?怎么打开呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马