黑马程序员技术交流社区

标题: 改文件名问题 [打印本页]

作者: 夕颜    时间: 2015-6-19 13:38
标题: 改文件名问题
改文件名失败,代码如下:
  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. }
复制代码

作者: hufu4635    时间: 2015-6-19 13:41
代码有问题,while循环外,应该释放资源资源
作者: 夕颜    时间: 2015-6-19 13:50
hufu4635 发表于 2015-6-19 13:41
代码有问题,while循环外,应该释放资源资源

是呢,这个是小问题,这个应该不会影响我该文件名,我的主要问题是,为什么文件名修改失败
作者: hufu4635    时间: 2015-6-19 14:49
夕颜 发表于 2015-6-19 13:50
是呢,这个是小问题,这个应该不会影响我该文件名,我的主要问题是,为什么文件名修改失败 ...

这是大问题,因为你没有释放资源,所以流一直在关联这个文件,所以无法对文件进行改名操作的亲
作者: 夕颜    时间: 2015-6-19 15:06
hufu4635 发表于 2015-6-19 14:49
这是大问题,因为你没有释放资源,所以流一直在关联这个文件,所以无法对文件进行改名操作的亲 ...

我把流关了还是不能改,最后是我把这两个方法写在两个主函数里面,文件名就改了
作者: hufu4635    时间: 2015-6-19 17:50
夕颜 发表于 2015-6-19 15:06
我把流关了还是不能改,最后是我把这两个方法写在两个主函数里面,文件名就改了 ...

能弄就好,虽然不知道你在说什么
作者: 一口老郭    时间: 2015-6-19 20:55
看起来好复杂的样子啊




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