黑马程序员技术交流社区

标题: 编写程序,将指定目录下所有.java文件拷贝到另一个目的中... [打印本页]

作者: 汗血黑马    时间: 2014-3-24 19:27
标题: 编写程序,将指定目录下所有.java文件拷贝到另一个目的中...
本帖最后由 汗血黑马 于 2014-3-26 19:13 编辑

能把编程的主要步骤,具体写清楚吗?
作者: Teale    时间: 2014-3-24 21:23
两部分, 第一部分找到这个.java文件
             第二部分将找到的这个文件改名,然后copy。
里面会用到递归。 这是我在测试时的代码

  1. package com.itheima;
  2. /** 编写程序,将指定目录下所有.java文件拷贝到另一个目的中,并将扩展名改为.txt*/
  3. import java.io.*;
  4. public class Test9 {
  5.         public static void main(String[] args) {
  6.                 File orig=new File("C:\\Users\\Administrator\\Desktop\\进阶代码源\\TKDZ\\TKDZ\\Tank\\src\\T1"); //源文件夹
  7.                 File dest=new File("C:\\Users\\Administrator\\Desktop\\进阶代码源\\TKDZ\\TKDZ\\Tank\\src\\存放");//要复制过去的文件夹
  8.                 findAndCopyJava(orig,dest);
  9.                
  10.         }
  11.         public static void copy(File orig,File dest){ //用于改后缀后复制
  12.                 BufferedReader buf = null;
  13.                 PrintWriter  out=null;;
  14.                 try{
  15.                         buf=new BufferedReader(new InputStreamReader(new FileInputStream(orig))); //读取流,提示阅读效率
  16.                         out=new PrintWriter(dest+"\\"+orig.getName().replace(".java", ".txt"));  // 把后缀改成.java,用Print流提升效率
  17.                 }catch(IOException e){
  18.                         System.out.println("文件orig或者dest异常");
  19.                 }
  20.                 String line=null;
  21.                 try{
  22.                 while((line=buf.readLine())!=null){
  23.                         out.println(line);
  24.                 }
  25.                
  26.                 }catch(IOException e){
  27.                        
  28.                 }
  29.                 finally{
  30.                         try{
  31.                                 if(buf!=null)
  32.                                         buf.close();
  33.                                 if(out!=null)
  34.                                         out.close();
  35.                         }catch(Exception e2){
  36.                                
  37.                         }
  38.                 }
  39.         }
  40.         public static void findAndCopyJava(File orig,File dest){  //
  41.                 if(!dest.exists()){            //不存在就创建目的目录,但是这个地址有可能是一个绝对地址。
  42.                         dest.mkdir();
  43.                 }
  44.                 if(!dest.isDirectory()){    //所以再次判断存在的文件是否是一个目录,而不是文件。
  45.                         dest.mkdir();
  46.                 }
  47.                 File[]  files=orig.listFiles();
  48.                 for(File file: files){     //遍历files
  49.                         if(file.isDirectory()){
  50.                                 findAndCopyJava(file,dest);  //递归,一直到file是一个文件而不是目录。
  51.                         }
  52.                         else if(file.getName().endsWith(".java")){
  53.                                 copy(file,dest);
  54.                         }
  55.                 }


  56.         }
  57. }
复制代码

作者: chaos    时间: 2014-3-24 22:27
public static void main(String[] args) {
          int b = 0;
          FileReader in = null;
          FileWriter out = null;
          try {
            in = new FileReader("d:/HelloWorld.java");
            out = new FileWriter("d:/HW.txt");
            while((b=in.read())!=-1){
              out.write(b);
            }
            out.close();
            in.close();
            
          } catch (FileNotFoundException e2) {
            System.out.println("找不到指定文件"); System.exit(-1);
          } catch (IOException e1) {
            System.out.println("文件复制错误"); System.exit(-1);
          }
          System.out.println("文件已复制");
  }
作者: 周峰峰    时间: 2014-12-31 22:19
Teale 发表于 2014-3-24 21:23
两部分, 第一部分找到这个.java文件
             第二部分将找到的这个文件改名,然后copy。
里面会用到 ...

程序有问题,用orig.getName().replace(".java", ".txt"),如果文件名里面有.java,也会被替换,应该用正则。
作者: chenshiji    时间: 2015-1-6 20:37
学习了!!
作者: 枪杆不如笔杆    时间: 2015-2-16 19:54
二楼的好强!受教了,收藏
作者: IT未来    时间: 2015-3-5 21:08
学习了。
作者: 李海明    时间: 2015-4-21 00:17
大神!学习了
作者: 時間_|_的灰    时间: 2015-5-26 13:15
二楼的好强,受教了
作者: 文森    时间: 2015-5-28 08:54
  1. import java.io.*;
  2. import java.util.*;
  3. public class Test9 {
  4.         public static void main(String[] args) throws IOException {
  5.                 // TODO Auto-generated method stub
  6.                 File sou = new File("c:\\java");  //源目录
  7.                 File des = new File("c:\\txt");  //目的目录
  8.                 if(!des.exists())
  9.                 {
  10.                         des. mkdirs();
  11.                 }
  12.                 ArrayList<File> al = new ArrayList<File>();
  13.                 fileToList(sou, al);
  14.                 for(File file:al)  //有一个文件就复制一次
  15.                 {
  16.                         writeToFile( des,  file);
  17.                 }
  18.                
  19.         }
  20.         public static void fileToList(File sou, ArrayList<File> al )  //源目录的文件名写到集合中
  21.         {
  22.                 File[] files = sou.listFiles();  //把文件列到数组中,方便遍历
  23.                 for(File file:files)
  24.                 {
  25.                         if(file.isDirectory()) //如果是文件夹
  26.                         {
  27.                                 fileToList(file,al);  //递归调用,取出子目录里的文件
  28.                         }                 
  29.                                 if(file.getName().endsWith(".java"))
  30.                                         al.add(file);                 
  31.                 }
  32.         }
  33.         public static void writeToFile( File des,File file) throws IOException  //把集合中文件写到目的目录中
  34.         {
  35.                 BufferedReader bufr = new BufferedReader(new FileReader(new File(file.getAbsolutePath())));   
  36.                 //创建文件的新方法 File file = new File(File 路径,String 文件名)
  37.                 BufferedWriter bufw = new BufferedWriter(new FileWriter(new File(des,file.getName().replace(".java", ".txt"))));
  38.                 String line = null;
  39.                 while((line = bufr.readLine())!=null)
  40.                 {
  41.                         bufw.write(line);
  42.                         bufw.newLine();
  43.                         bufw.flush();
  44.                 }
  45.                 bufw.close();
  46.                 bufr.close();               
  47.         }

  48. }
复制代码

作者: Ethan丶    时间: 2015-8-27 23:37
楼主真棒啊
作者: 野出岔子    时间: 2015-10-30 00:43
这个,,小白表示还有些看不懂,,先去复习再回来看~~~
作者: peide0427    时间: 2015-11-3 20:35
一年级生飘过~~




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