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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 wf111sxwf 于 2015-1-30 23:18 编辑

  1.                         <div class="blockcode"><blockquote>import java.io.BufferedReader;
  2. import java.io.BufferedWriter;
  3. import java.io.File;
  4. import java.io.FileReader;
  5. import java.io.FileWriter;
  6. import java.io.IOException;
  7. import java.util.ArrayList;

  8. /**
  9. * 这是我自己闲来无事做的一道题
  10. * 题目:复制一个多级文件夹,并将其中的.java文件复制到令一个文件夹中,在复制完成后(注意这里是复制完成后)
  11. * 将文件名后缀改为.txt
  12. * 我用的是renameTo方法  文件时复制成功了  但是名字没改成功,Debug调试了半天 没结果  求大神帮助啊!
  13. *
  14. *
  15. */

  16. public class CopyFileDemo {

  17.         public static void main(String[] args) throws IOException {
  18.                 File file = new File("d:\\java工作区\\day15");
  19.                
  20.                 copyFileDemo(file);
  21. //                changeFileName();

  22.         }

  23.         public static void copyFileDemo(File file) throws IOException {
  24.                 ArrayList<File>al = new ArrayList<File>();
  25.                
  26.                 getJavaFile(file,al);
  27.                
  28.                
  29.                
  30.         }

  31.         private static void getJavaFile(File dir,ArrayList<File>al) throws IOException {
  32.                 // TODO Auto-generated method stub
  33.                
  34.                 if(!dir.exists())
  35.                         dir.mkdir();
  36.                 File[]files = dir.listFiles();
  37.                 for(File file : files){
  38.                         if(file.isDirectory()){
  39.                                 getJavaFile(file,al);
  40.                         }else{
  41.                          String fileName = file.getName();
  42.                          if(fileName.endsWith(".java"))
  43.                                  al.add(file);
  44.                         }
  45.                                  
  46.                                  
  47.                 }
  48.                
  49.                 copyFile(al);
  50.                         
  51.         }

  52.         private static void copyFile(ArrayList<File> al) throws IOException {
  53.                 // TODO Auto-generated method stub
  54.                 File dir2 = new File("d:\\复制文件夹");
  55.                 if(!dir2.exists())
  56.                         dir2.mkdir();
  57.                 BufferedWriter bufw = null;
  58.                 BufferedReader bufr= null;
  59.                
  60.                 for(File file : al){
  61.                         if(file.getName().endsWith(".java")){
  62.                                 bufw = new BufferedWriter(new FileWriter(new File(dir2,file.getName())));
  63.                                 bufr = new BufferedReader(new FileReader(file));
  64.                                 String line = null;
  65.                                 while((line = bufr.readLine()) !=null){
  66.                                        
  67.                                         bufw.write(line);
  68.                                         bufw.newLine();
  69.                                         bufw.flush();
  70.                                 }
  71.                                 bufr.close();
  72.                                 bufw.close();
  73.                         }
  74.                 }
  75.                changeFileName(dir2);
  76.         }

  77.         private static void changeFileName(File dir2) {
  78.                
  79.                
  80.                
  81.            File[]files = dir2.listFiles();
  82.             
  83.            for(File file :files){
  84.                    String name = file.getName().replace(".java", ".txt");
  85.                                           
  86.                   
  87.                                     File newFile = new File(name);
  88.                                     
  89.                                     
  90.                                     boolean b =  file.renameTo(newFile);
  91.                                     
  92.                                     System.out.println(b);
  93. //                                    System.out.println(file.getName());
  94. //                         System.out.println(file.getName());
  95.            }
  96.         }
  97. }
复制代码

8 个回复

倒序浏览
// 对复制完的数据改名
                File[] dfa = destFile.listFiles();
                for (File f : dfa) {
                        String s = f.getName().replace(".java", ".jad");
                        File newFile = new File(destFile, s);
                        f.renameTo(newFile);
                }

new的File里面你少了路径,当然改不了
回复 使用道具 举报
Imp_x 发表于 2015-1-30 22:23
// 对复制完的数据改名
                File[] dfa = destFile.listFiles();
                for (File f : dfa) {

File newFile = new File("d:\\复制文件夹"+name);  

我试过了在调试的时候 打印为false  还是没改成 所以才来求助啊
回复 使用道具 举报
Imp_x 发表于 2015-1-30 22:23
// 对复制完的数据改名
                File[] dfa = destFile.listFiles();
                for (File f : dfa) {

看看这个

QQ图片20150130224144.jpg (163.53 KB, 下载次数: 7)

QQ图片20150130224144.jpg
回复 使用道具 举报
我想说- -你mian方法里面的//                changeFileName();   有传路径进去么:L
回复 使用道具 举报
本帖最后由 wf111sxwf 于 2015-1-30 23:00 编辑
Imp_x 发表于 2015-1-30 22:52
我想说- -你mian方法里面的//                changeFileName();   有传路径进去么

  那个注释调了啊  那个是调试的时候 把参数去了  调试用的       你看看实际在运行的方法 有什么 不对的啊  
总是改不了名字
回复 使用道具 举报
wf111sxwf 发表于 2015-1-30 22:59
那个注释调了啊  那个是调试的时候 把参数去了  调试用的       你看看实际在运行的方法 有什么 不对的 ...

解决了  是路径的问题  后面也要加路径分隔符的。。  
回复 使用道具 举报
File newFile = new File(dir2,name);  已试验成功,2L讲的没错 LZ你再试下
回复 使用道具 举报
这注释,太少了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马