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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hnyzhlq 中级黑马   /  2015-7-11 16:35  /  837 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 hnyzhlq 于 2015-7-11 17:09 编辑
  1. /**
  2. * 1.编程实现题
  3. * 将项目路径下Java_all目录下所有的.java文件复制到项目路径下Java_jad文件夹下,
  4. * 并将文件扩展名从原来的.java修改成.jad. (要求有思路,有注释,有代码
  5. */
  6. /*思路:
  7. * 1.新建File对象指向Java_all目录,递归获取java_all目录所有文件,获取到文件夹时在目标路径创建同名文件夹
  8. * 2.通过步骤1获取所有.java绝对路径字符串
  9. * 3.创建输入流根据字符串数组依次获取文件,并通过输出流将文件输出到对应的.jad文件
  10. * */
  11. import java.io.*;

  12. public class Test1 {
  13.         public static void main(String[]args) throws Exception{
  14.                 File fl = new File("d:\\Java_all");
  15.                 //两个StringBuilder一个用来存储路径,一个存储文件名
  16.                 StringBuilder sb = new StringBuilder();
  17.                 getName(fl,sb);
  18.                 //将添加绝对路径的StringBuilder去除末尾分割标记并切割为字符串数组
  19.                 String[] sarr = sb.substring(0,sb.length()-7).toString().split(",split,");
  20.                 copy(sarr);
  21.                
  22.                
  23.         }
  24.         //定义方法获取指定文件夹下的所有.java文件路径
  25.         public static void getName(File fl,StringBuilder sb){
  26.                 File[] fla = fl.listFiles();
  27.                 for(File f :fla){
  28.                         if(f.isDirectory()){
  29.                                 //在输出路径创建同名文件夹,便于复制文件时寻找路径
  30.                                 new File(f.getAbsolutePath().replace("Java_all", "Java_jad")).mkdir();
  31.                                 //如果是文件夹重复调用方法
  32.                                 getName(f,sb);
  33.                         }
  34.                         else{
  35.                                 //判断是否是.java文件
  36.                                 if(f.getName().endsWith(".java")){
  37.                                         //将路径添加到sb,并加上分割标记
  38.                                         sb.append(f.getAbsolutePath()+",split,");
  39.                                 }
  40.                         }       
  41.                 }
  42.         }
  43.         //定义方法根据路径字符串数组复制文件
  44.         public static void copy(String[] sarr) throws IOException{
  45.                 for (int i = 0;i<sarr.length;i++){
  46.                         //获取存储路径
  47.                         String str = sarr[i].replace("Java_all","Java_jad").replace(".java", ".jad");
  48.                         //创建输入流输出流
  49.                         BufferedReader br = new BufferedReader(new FileReader(sarr[i]));
  50.                         BufferedWriter bw = new BufferedWriter(new FileWriter(str));
  51.                         //传输文件
  52.                         String len = null;
  53.                         while((len=br.readLine()) != null){
  54.                                 bw.write(len);
  55.                                 bw.newLine();
  56.                                 bw.flush();               
  57.                         }
  58.                         //关闭流
  59.                         br.close();
  60.                         bw.close();
  61.                 }
  62.                
  63.         }
  64. }
复制代码

评分

参与人数 1黑马币 +8 收起 理由
xiaoqiang01 + 8 很给力!

查看全部评分

6 个回复

倒序浏览
这个确实写的可以,学到了,我知道简单的复制文件,没想到还可以这么用,学到了
回复 使用道具 举报
孟卫严 发表于 2015-7-11 17:01
这个确实写的可以,学到了,我知道简单的复制文件,没想到还可以这么用,学到了 ...

这是今天的面试题- -
回复 使用道具 举报
你已经走到这一步了,好快啊;
我还在为技术分着急;
楼主好人,希望把前面的入学测试题和面试跟我说一下或发个链接我自己看看
提前学习一下;
膜拜!
回复 使用道具 举报
nice,文件复制比较深了吧
回复 使用道具 举报
感觉有点难
回复 使用道具 举报
孟卫严 发表于 2015-7-11 17:25
你已经走到这一步了,好快啊;
我还在为技术分着急;
楼主好人,希望把前面的入学测试题和面试跟我说一下或 ...

入学要求技术分25分。
面试通过但是技术分不够,只能等下一批了。。。
你需要我的题目的话,可以私信我QQ,我发给你
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马