黑马程序员技术交流社区

标题: Java编程题 [打印本页]

作者: xxzlhx    时间: 2015-3-9 12:47
标题: Java编程题
编写程序,将指定目录下所有.java文件拷贝到另一个目的中,并将扩展名改为.txt  这个程序怎么编写,怎么实现功能?
作者: ko889910    时间: 2015-3-9 13:32
你是需要按照原来的层次结构复制还是只要将所有.java文件复制目标文件夹中
作者: ko889910    时间: 2015-3-9 13:54
  1. package com.sun.file;

  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileOutputStream;
  7. import java.io.FileReader;
  8. import java.io.FileWriter;
  9. import java.io.InputStream;
  10. import java.io.OutputStream;
  11. import java.util.ArrayList;
  12. import java.util.List;

  13. public class Change {
  14.         public static void main(String[] args) {
  15.                
  16.                 if (Change.javaToTxt(new File("d:"+File.separator+"pro"), new File("d:"+File.separator+"11")))
  17.                         System.out.println("文件复制完成:总共"+listFile.size()+"个文件");
  18.                 else
  19.                         System.out.println("文件复制失败");
  20.         }

  21.         private static List<File> listFile = new ArrayList<File>();// 用于存放所有需要copy的文件

  22.         public static boolean javaToTxt(File src, File des) {
  23.                 toList(src);// 先将src中所有.java文件放入list中
  24.                 if (toCopy(des))
  25.                         return true;
  26.                 return false;

  27.         }

  28.         /**
  29.          * 用于将list中所有.java文件复制到目标路径下 并实现改名
  30.          *
  31.          * @param des
  32.          * @return
  33.          */
  34.         private static boolean toCopy(File des) {
  35.                 BufferedReader br = null;
  36.                 BufferedWriter bw = null;
  37.                 try {
  38.                         for (File fileSrc : listFile) {
  39.                                 br = new BufferedReader(new FileReader(fileSrc));
  40.                                 bw = new BufferedWriter(new FileWriter(new File(
  41.                                                 des.getAbsolutePath()+File.separator
  42.                                                                 + fileSrc.getName().replace(".java", ".txt"))));
  43.                                 String content = null;
  44.                                 while ((content = br.readLine()) != null) {
  45.                                         bw.write(content);
  46.                                 }
  47.                                 bw.flush();
  48.                                 br.close();
  49.                                 bw.close();
  50.                         }
  51.                 } catch (Exception e) {
  52.                         e.printStackTrace();
  53.                         return false;
  54.                 }
  55.                 return true;
  56.         }

  57.         /**
  58.          * 用于将一个目录中的所有.java文件存入list中
  59.          *
  60.          * @param file
  61.          */
  62.         public static void toList(File file) {
  63.                 if (!file.exists())
  64.                         return;
  65.                 if (file.isFile() && file.getName().endsWith(".java")) {
  66.                         listFile.add(file);
  67.                 } else {
  68.                         File[] files = file.listFiles();
  69.                         if (files != null)
  70.                                 for (File file2 : files) {
  71.                                         toList(file2);
  72.                                 }
  73.                 }

  74.         }

  75. }
复制代码
10分钟写出来的,没做文件隐藏性判断,输入的参数是D:/pro中的所有.java文件改名写入D:/11文件夹中,没按照层次输出






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