黑马程序员技术交流社区

标题: 一个面试编程题??? [打印本页]

作者: 王安琪    时间: 2013-6-23 10:59
标题: 一个面试编程题???
本帖最后由 神之梦 于 2013-6-27 15:21 编辑
  1. /*
  2. * 编写一个程序,将f:\java目录下的所有.java文件复制到g:\jad目录下,并将原来文件的扩展名从.java改为.jad.
  3. * */

  4. import java.io.*;
  5. public class Java2Jad {

  6.         /**
  7.          * @param args
  8.          */
  9.         public static void main(String[] args) throws Exception{
  10.                 // TODO Auto-generated method stub
  11.                
  12.                 //创建file文件对象,用于操作文件
  13.                 File srcDir = new File("f:\\java");
  14.                
  15.                 //判断该目录是否存在,是否是目录
  16.                 if(!(srcDir.exists() && srcDir.isDirectory())){
  17.                         throw new Exception("文件不存在");
  18.                 }else{
  19.                         //该路径是目录且存在,列出该目录下的文件,并传递一个文件过滤器来过滤出.java文件
  20.                         File[] files = srcDir.listFiles(
  21.                         
  22.                         //创建匿名内部类(FilenameFilter接口的实现类),并复写其中的方法,找出后缀名为.java的文件
  23.                         new FilenameFilter(){
  24.                                 public boolean accept(File dir,String name){
  25.                                         return name.endsWith(".java");
  26.                                 }
  27.                         }
  28.                         );
  29.                         
  30.                         System.out.println(files.length);
  31.                         
  32.                         //创建file对象,关联文件
  33.                         File destDir = new File("g:\\jad");
  34.                         
  35.                         //判断该目录是否存在,若不存在,创建
  36.                         if(!(destDir.exists())){
  37.                                 destDir.mkdir();        
  38.                         }else{
  39.                                 //若存在,遍历该目录
  40.                                 for(File f : files){
  41.         
  42.                                         FileInputStream fis = new FileInputStream(f);
  43.                                        
  44.                                         //将.java文件改为.jad文件
  45.                                         String destFileName = f.getName().replaceAll("\\.java[        DISCUZ_CODE_0        ]quot;, ".jad");
  46.                                        
  47.                                         FileOutputStream fos = new FileOutputStream(new File(destDir,destFileName));
  48.    
  49.             copy(fis,fos);
  50.                                        
  51.                                         fis.close();
  52.                                         fos.close();
  53.                                        
  54.                                 }
  55.                         }
  56.                 }               
  57.         }

  58.         //创建复制文件的方法,
  59.         private static void copy(InputStream ips, OutputStream ops) throws Exception{
  60.                
  61.                 byte[] buf = new byte[1024];
  62.                 int len = 0;
  63.                 while((len=ips.read(buf))!=-1){
  64.                         ops.write(buf, 0, len);
  65.                         
  66.                 }
  67.         }

  68. }
复制代码
如果该目录下只有一个.java文件,复制到g盘后,g盘中为空,这时什么原因呀?

作者: 王靖远    时间: 2013-6-23 13:09
我觉得用你的代码,下面有几个文件都是复制不过去的。
作者: 王靖远    时间: 2013-6-23 13:23
王靖远 发表于 2013-6-23 13:09
我觉得用你的代码,下面有几个文件都是复制不过去的。

搞错了,是能复制的、
作者: 王靖远    时间: 2013-6-23 13:40
if(!(destDir.exists())){

                                destDir.mkdir();        

                        }else{
这里搞错了,如果目录不存在你就去建立目录,不执行下面代码了。你的代码只有当destDir建立好之后才能复制文件。  把else{}去掉就可以了。和复制几个文件无关。
作者: 王安琪    时间: 2013-6-23 18:22
王靖远 发表于 2013-6-23 13:40
if(!(destDir.exists())){

                                destDir.mkdir();        

哦哦,OK了




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