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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 夕颜 中级黑马   /  2015-6-19 13:38  /  678 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

改文件名失败,代码如下:
  1. package com.my;
  2. /*
  3. * 1.编写一个程序,把一个目录里边的所有带.java文件拷贝到另一个目录中,拷贝成功后,把后缀名是.java的文件改为.txt文件。
  4. * (要求有思路,有注释,有代码,需要注意的是:这个是先拷贝,拷贝成功后才可以改后缀名的)
  5. * */
  6. import java.io.*;
  7. import java.util.*;
  8. public class CopyFile {
  9.         public static void main(String[] args){
  10.                 //将一个目录里面的Java文件拷贝到另一个目录里
  11.                 File f = new File("C:\\Users\\cecy\\Desktop\\javastudy\\javacode\\day25");
  12.                 File f1 = new File("C:\\Users\\cecy\\Desktop\\javastudy\\javacode\\Test");
  13.                 String[] files = f.list();
  14.                 BufferedReader bfr = null;
  15.                 BufferedWriter bfw = null;
  16.                 for(int i=0;i<files.length;i++){
  17.                         if(files[i].endsWith(".java")){
  18.                                 try{                               
  19.                                         bfr = new BufferedReader(new FileReader(f+"\\"+files[i]));
  20.                                         bfw = new BufferedWriter(new FileWriter(f1+"\\"+files[i]));
  21.                                         String line = null;
  22.                                         while((line = bfr.readLine()) != null){
  23.                                                 bfw.write(line);
  24.                                                 bfw.newLine();
  25.                                                 bfw.flush();
  26.                                         }
  27.                                 }catch(IOException e){}
  28.                         }
  29.                 }
  30.                 //将Java文件的改成txt文件
  31.                 String[] names = f1.list();
  32.                 for(int i=0;i<names.length;i++){
  33.                         String name = names[i].replaceAll("(.\\.)[j][a][v][a]","$1txt");
  34.                         System.out.println(names[i]+"------"+name);
  35.                         File f2 = new File(f1,names[i]);
  36.                         File f3 = new File(f1,name);
  37.                         System.out.println(f2+"------"+f3);
  38.                         System.out.println(f2.renameTo(f3));
  39.                 }
  40.         }
  41. }
复制代码

6 个回复

倒序浏览
代码有问题,while循环外,应该释放资源资源
回复 使用道具 举报
hufu4635 发表于 2015-6-19 13:41
代码有问题,while循环外,应该释放资源资源

是呢,这个是小问题,这个应该不会影响我该文件名,我的主要问题是,为什么文件名修改失败
回复 使用道具 举报
夕颜 发表于 2015-6-19 13:50
是呢,这个是小问题,这个应该不会影响我该文件名,我的主要问题是,为什么文件名修改失败 ...

这是大问题,因为你没有释放资源,所以流一直在关联这个文件,所以无法对文件进行改名操作的亲
回复 使用道具 举报
hufu4635 发表于 2015-6-19 14:49
这是大问题,因为你没有释放资源,所以流一直在关联这个文件,所以无法对文件进行改名操作的亲 ...

我把流关了还是不能改,最后是我把这两个方法写在两个主函数里面,文件名就改了
回复 使用道具 举报
夕颜 发表于 2015-6-19 15:06
我把流关了还是不能改,最后是我把这两个方法写在两个主函数里面,文件名就改了 ...

能弄就好,虽然不知道你在说什么
回复 使用道具 举报
看起来好复杂的样子啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马