A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 汗血黑马 于 2014-3-26 19:13 编辑

能把编程的主要步骤,具体写清楚吗?

14 个回复

倒序浏览
两部分, 第一部分找到这个.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. }
复制代码

点评

学习了。你好棒!  发表于 2014-8-1 16:44

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
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-8-1 16:46

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报 1 2
Teale 发表于 2014-3-24 21:23
两部分, 第一部分找到这个.java文件
             第二部分将找到的这个文件改名,然后copy。
里面会用到 ...

程序有问题,用orig.getName().replace(".java", ".txt"),如果文件名里面有.java,也会被替换,应该用正则。
回复 使用道具 举报
学习了!!
回复 使用道具 举报
二楼的好强!受教了,收藏
回复 使用道具 举报
学习了。
回复 使用道具 举报
大神!学习了
回复 使用道具 举报
二楼的好强,受教了
回复 使用道具 举报
  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. }
复制代码
回复 使用道具 举报
楼主真棒啊
回复 使用道具 举报
这个,,小白表示还有些看不懂,,先去复习再回来看~~~
回复 使用道具 举报
一年级生飘过~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马