黑马程序员技术交流社区

标题: 帮我看看这个代码那里错了 [打印本页]

作者: 杜正冬    时间: 2012-11-18 16:47
标题: 帮我看看这个代码那里错了
public static void main(String[] args) throws Exception {
                File srcDir = new File("java");
                if (!(srcDir.exists() && srcDir.isDirectory()))
                        throw new Exception("目录不存在");
                File[] files = srcDir.listFiles(new FilenameFilter() {
                        public boolean accept(File dir, String name) {
                                return name.endsWith(".java");
                        }

                });

                System.out.println("共有" + files.length + "个java文件");
                File destDir = new File("jad");
                if (!destDir.exists())
                        destDir.mkdir();
                for (File f : files) {
                        FileInputStream fis = new FileInputStream(f);
                        String destFileName = f.getName().replaceAll("//.java$", ".jad");
                        FileOutputStream fos = new FileOutputStream(new File(destDir,
                                        destFileName));
                        copy(fis, fos);
                        fis.close();
                        fos.close();
                }
        }

        private static void copy(InputStream ips, OutputStream ops)
                        throws Exception {
                int len = 0;
                byte[] buf = new byte[1024];
                while ((len = ips.read(buf)) != -1) {
                        ops.write(buf, 0, len);
                }
        }
作者: 奚华    时间: 2012-11-18 17:27
  1. import java.io.*;

  2. public class FileCopy
  3. {
  4.         public static void main(String[] args) throws Exception {
  5.                 File srcDir = new File("java");
  6.                 if (!(srcDir.exists() && srcDir.isDirectory()))
  7.                         throw new Exception("目录不存在");
  8.                 File[] files = srcDir.listFiles(new FilenameFilter() {
  9.                         public boolean accept(File dir, String name) {
  10.                                 return name.endsWith(".java");//这里需要检测该文件对象是不是目录,如果有一个名为java.java的目录那么你的代码就会有异常
  11.                         }
  12.                 });
  13.                        
  14.                         System.out.println("共有" + files.length + "个java文件");
  15.                         File destDir = new File("jad");
  16.                         if (!destDir.exists())
  17.                                 destDir.mkdir();
  18.                         for (File f : files) {
  19.                                 FileInputStream fis = new FileInputStream(f);
  20.                                 String destFileName = f.getName().replaceAll("//.java$", ".jad");
  21.                                 FileOutputStream fos = new FileOutputStream(new File(destDir,
  22.                                         destFileName));
  23.                                 copy(fis, fos);
  24.                                 fis.close();
  25.                                 fos.close();
  26.                                 }
  27.         }
  28.         private static void copy(InputStream ips, OutputStream ops)
  29.                 throws Exception {
  30.                 int len = 0;
  31.                 byte[] buf = new byte[1024];
  32.                 while ((len = ips.read(buf)) != -1) {
  33.                         ops.write(buf, 0, len);
  34.                 }
  35.         }

  36. }
复制代码
accept方法需要检测该文件对象是不是目录,如果有一个名为java.java的目录那么你的代码就会有异常
作者: 奚华    时间: 2012-11-18 17:28
你的正则表达式怎么学的?我记不住啊!
作者: 杜正冬    时间: 2012-11-18 20:27
还是报错

作者: 杜正冬    时间: 2012-11-18 20:29
题目: 编写一个程序,将d:\java 目录下的所有.java 文件复制到d:\jad 目录下,
         并将原来文件的扩展名从.java 改为.jad。
作者: 奚华    时间: 2012-11-18 23:59
我的就不报错啊

作者: 奚华    时间: 2012-11-18 23:59
复制的很对啊

作者: 奚华    时间: 2012-11-19 00:01
你先复制过去,再rename就行了
作者: 杜正冬    时间: 2012-11-19 22:00
未解决  伤心中。。。。




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