黑马程序员技术交流社区

标题: 编写一个程序,将d:/java目录下的所有.java文件复制到d:/jad... [打印本页]

作者: Justfeeling    时间: 2014-9-22 11:13
标题: 编写一个程序,将d:/java目录下的所有.java文件复制到d:/jad...
  1. /*
  2.         取出一个目录下的所有.java文件
  3. */
  4. import java.io.*;
  5. public class FileDemo {
  6.        
  7.         public static void main(String[] args) {
  8.                 method();
  9.         }

  10.         private static void method() {
  11.                
  12.                 File file = new File("c:\\demo");

  13.                 File[] files = file.listFiles(new FileFilter(){

  14.                         public boolean accept(File pathname) {
  15.                                 return pathname.getName().endsWith(".java");
  16.                         }
  17.                 });

  18.                 for(File f : files){
  19.                         System.out.println(f);
  20.                 }
  21.         }       
  22. }
复制代码



作者: fantacyleo    时间: 2014-9-22 11:28
本帖最后由 fantacyleo 于 2014-9-22 11:37 编辑

你这只是列出所有.java文件,没有实现复制。谁能第一个把复制的代码补全,我给加10个黑马币
作者: sk120110    时间: 2014-9-22 11:34
这只是用过滤器遍历出来了而已,没实现复制呢,没写完吧?
作者: 花开彼岸天    时间: 2014-9-22 11:55
public void CopyFile(File fi,File fo){
       BufferedReader br=new BufferedReade(new InputStreamReader(new FileInputStream(fi)));
       BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fo)));

}
作者: 花开彼岸天    时间: 2014-9-22 11:57
下面的就是 读写存入;
作者: 更上一层    时间: 2014-9-22 13:34
fantacyleo 发表于 2014-9-22 11:28
你这只是列出所有.java文件,没有实现复制。谁能第一个把复制的代码 补全,我给加10个黑马币 ...

记得给我哦,顺便问一下黑马的技术分怎么拿??
/*
* 9、 编写程序,将指定目录下所有.java文件拷贝到另一个目的中,并将扩展名改为.txt
*
* */

public class Test9 {

        /**
         * @param args
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {
               
                copyJava("C:\\Users\\lenovo\\Desktop\\abc","C:\\Users\\lenovo\\Desktop\\eee" );

        }
       
        public static void copyJava(String path,String direction) throws IOException{
               
                File file = new File(direction);
                if(!file.exists()){
                        file.mkdirs();
                }
               
                BufferedInputStream bis = null;
                BufferedOutputStream bos = null;
                File f = new File(path);
                File[] files = f.listFiles();
                for(int i=0;i<files.length;i++){
                        String filename = files.getName();
                        if(filename.endsWith(".java")){
                                int len = 0;
                                byte[] buffer = new byte[1024];
                                bis = new BufferedInputStream(new FileInputStream(files));
                                bos = new BufferedOutputStream(new FileOutputStream(direction+"\\"+filename.replace(".java", ".txt")));
                                while((len=bis.read(buffer))!=-1){
                                        bos.write(buffer, 0, len);
                                }
                                bis.close();
                                bos.close();
                        }
                }
        }

}
作者: 小漠    时间: 2014-9-22 13:45
fantacyleo 发表于 2014-9-22 11:28
你这只是列出所有.java文件,没有实现复制。谁能第一个把复制的代码 补全,我给加10个黑马币 ...

  1. /*
  2.         取出一个目录下的所有.java文件
  3. */
  4. import java.io.*;
  5. public class FileDemo {
  6.         
  7.         public static void main(String[] args) throws Exception {
  8.                 method();
  9.         }

  10.         private static void method() throws Exception {
  11.                
  12.                 File file = new File("D:\\heima\\day0913");
  13.                 String  outfile = "D:\\heima\\copy";



  14.                 File[] files = file.listFiles(new FileFilter(){

  15.                         public boolean accept(File pathname) {
  16.                                 return pathname.getName().endsWith(".java");
  17.                         }
  18.                 });

  19.                 for(File f : files){
  20.                         copyFile(f, outfile);
  21.                         
  22.                 }
  23.                
  24.                                
  25.         }        

  26.         static void copyFile(File src, String dest) throws Exception {
  27.         FileInputStream fin=new FileInputStream(src);
  28.         
  29.         FileOutputStream fou=new FileOutputStream(dest+"\\"+src.getName() );
  30.         byte [] data=  new byte[2048];
  31.         int r;
  32.         while( (r=fin.read(data))>0){
  33.             fou.write(data);
  34.         }
  35.         fin.close();
  36.         fou.close();
  37.     }
  38. }
复制代码

作者: fantacyleo    时间: 2014-9-22 16:17
更上一层 发表于 2014-9-22 13:34
记得给我哦,顺便问一下黑马的技术分怎么拿??
/*
* 9、 编写程序,将指定目录下所有.java文件拷贝到另 ...

你的代码编译都通不过,请检查语法问题
作者: fantacyleo    时间: 2014-9-22 16:21

你的代码可以运行、复制。但是复制出来的文件大小和源文件不相等
作者: Aaron_H    时间: 2014-9-22 16:51
修改了下楼上的代码,应该能用了,你试试 static void copyFile(File src, String dest) throws Exception {         FileInputStream fin=new FileInputStream(src);                  FileOutputStream fou=new FileOutputStream(dest+"\\"+src.getName() );         byte [] data=  new byte[2048];         int r;         while( (r=fin.read(data))>0){             fou.write(data,0,r);         }         fin.close();         fou.close();     }
作者: Aaron_H    时间: 2014-9-22 16:53
上面排版乱了,重新发
  1. static void copyFile(File src, String dest) throws Exception {
  2.         FileInputStream fin=new FileInputStream(src);
  3.         
  4.         FileOutputStream fou=new FileOutputStream(dest+"\\"+src.getName() );
  5.         byte [] data=  new byte[2048];
  6.         int r;
  7.         while( (r=fin.read(data))>0){
  8.             fou.write(data,0,r);
  9.         }
  10.         fin.close();
  11.         fou.close();
  12.     }
复制代码

作者: fantacyleo    时间: 2014-9-22 16:57
之前给出代码的两位朋友加油哈,只要你们能说出自己代码中的问题并改好,我依然会给你们每人加10个黑马币
作者: Aaron_H    时间: 2014-9-22 17:21
fantacyleo 发表于 2014-9-22 16:57
之前给出代码的两位朋友加油哈,只要你们能说出自己代码中的问题并改好,我依然会给你们每人加10个黑马币 ...

楼主偏心,我也要黑马币@_@
作者: fantacyleo    时间: 2014-9-22 17:28
Aaron_H 发表于 2014-9-22 17:21
楼主偏心,我也要黑马币@_@

我不是楼主哈。而且我给你加过黑马币了,看10楼
作者: 小漠    时间: 2014-9-22 20:06
本帖最后由 小漠 于 2014-9-22 20:07 编辑
fantacyleo 发表于 2014-9-22 16:57
之前给出代码的两位朋友加油哈,只要你们能说出自己代码中的问题并改好,我依然会给你们每人加10个黑马币 ...

11L的都帮我改了,:'(。。。不过真的太马虎了,竟然没有核对大小。。。。
作者: wtjohn    时间: 2014-9-22 20:47
fantacyleo 发表于 2014-9-22 17:28
我不是楼主哈。而且我给你加过黑马币了,看10楼

大大问一句啊,(这两天才开始看的IO) 既然是复制.java文件,为何不用 字符流?
作者: fantacyleo    时间: 2014-9-22 20:50
wtjohn 发表于 2014-9-22 20:47
大大问一句啊,(这两天才开始看的IO) 既然是复制.java文件,为何不用 字符流?

可以啊。你以楼主的代码为基础,用字符流把复制部分补全,只要能正确运行,我也给你加10个黑马币
作者: 更上一层    时间: 2014-9-22 21:21
  1. package com.itheima;

  2. import java.io.BufferedInputStream;
  3. import java.io.BufferedOutputStream;
  4. import java.io.BufferedReader;
  5. import java.io.File;
  6. import java.io.FileInputStream;
  7. import java.io.FileNotFoundException;
  8. import java.io.FileOutputStream;
  9. import java.io.IOException;


  10. /*
  11. * 9、 编写程序,将指定目录下所有.java文件拷贝到另一个目的中,并将扩展名改为.txt
  12. *
  13. * */

  14. public class Test9 {

  15.         /**
  16.          * @param args
  17.          * @throws IOException
  18.          */
  19.         public static void main(String[] args) throws IOException {
  20.                
  21.                 copyJava("C:\\Users\\lenovo\\Desktop\\abc","C:\\Users\\lenovo\\Desktop\\eee" );

  22.         }
  23.        
  24.         public static void copyJava(String path,String direction) throws IOException{
  25.                
  26.                 File file = new File(direction);
  27.                 if(!file.exists()){
  28.                         file.mkdirs();
  29.                 }
  30.                
  31.                 BufferedInputStream bis = null;
  32.                 BufferedOutputStream bos = null;
  33.                 File f = new File(path);
  34.                 File[] files = f.listFiles();
  35.                 for(int i=0;i<files.length;i++){
  36.                         String filename = files[i].getName();
  37.                         if(filename.endsWith(".java")){
  38.                                 int len = 0;
  39.                                 byte[] buffer = new byte[1024];
  40.                                 bis = new BufferedInputStream(new FileInputStream(files[i]));
  41.                                 bos = new BufferedOutputStream(new FileOutputStream(direction+"\\"+filename.replace(".java", ".txt")));
  42.                                 while((len=bis.read(buffer))!=-1){
  43.                                         bos.write(buffer, 0, len);
  44.                                 }
  45.                                 bis.close();
  46.                                 bos.close();
  47.                         }
  48.                 }
  49.         }

  50. }
复制代码

作者: wtjohn    时间: 2014-9-22 22:03
  1. package practise;

  2. import java.io.*;

  3. public class test_02 {
  4.         public static void main(String[] args) throws Exception {
  5.                 move();
  6.         }
  7.         public static void move() throws Exception
  8.         {
  9.                 File file=new File("/home/wtmz/workspace/a/");
  10.                 File[] files=file.listFiles(new FileFilter()
  11.                 {
  12.                         public boolean accept(File f)
  13.                         {
  14.                                 return f.getName().endsWith(".java");
  15.                         }
  16.                         
  17.                 });
  18.                
  19.                 for(File f:files)
  20.                 {
  21. //                        System.out.println(f);
  22.                         copyTo(f,"/home/wtmz/workspace/b/");
  23.                 }
  24.                
  25.         }
  26.         public static void copyTo(File f,String dst) throws Exception
  27.         {
  28.                 BufferedReader bufr=new BufferedReader (new FileReader(f));
  29.                 BufferedWriter bufw=new BufferedWriter(new FileWriter(dst+f.getName()));
  30.                
  31.                 char[] buf=new char[1024];
  32.                 int len=0;
  33.                 while((len=bufr.read(buf))!=-1)
  34.                 {
  35.                         bufw.write(buf,0,len);
  36.                 }
  37.                 bufw.close();
  38.                 bufr.close();
  39.         }
  40. }
复制代码


这是自己电脑上运行的( kubuntu系统下),:lol 做出来发现和楼上用字节流的没啥差啊:L  




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