黑马程序员技术交流社区

标题: 关于IO [打印本页]

作者: zl78365336    时间: 2013-12-6 20:41
标题: 关于IO
本帖最后由 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. }




复制代码


作者: 摄影勾魂    时间: 2013-12-6 21:25
第18行,copyFiles(files[x],des);  des从哪儿来,你在第11行定义 showDir(File dir) 时,形参列表里是没有des。这个问题解决了,而且 也确实存在e:/zz ,编译运行时不会有问题的。不过,你要把 e:/zz 下的文件夹或者文件都复制到e:/zl下,z1又是什么格式的呢?怎么打开呢
作者: 刘敏    时间: 2013-12-6 22:52
你的问题是想把一个文件夹目录下的东东拷贝到另一个文件夹下;但是你的CopyFiles中流对象只能关联具体的文件,而不能是文件夹!
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(des));
这个des应该是文件而不是文件夹
作者: zl78365336    时间: 2013-12-6 23:08
用什么方式来完善这个程序呢?




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