黑马程序员技术交流社区

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

作者: 高阳    时间: 2013-1-8 01:38
标题: 修改文件后缀名问题
       public static void main(String[] args)
         {
                 File dir=new File("e:\\复件java程序");
                 changeFilename(dir);
         }
         public static void changeFilename(File dir)//该方法应用递归遍历的方法修改一个目标文件夹dir下所有java文件名
        {   System.out.println("-"+dir.getName());
                 File[] files=dir.listFiles();
                for(int x=0;x<files.length;x++)
                {
                        if(files[x].isDirectory())
                                 changeFilename(files[x]);
                        else if(files[x].isFile())
                      {
                               String s=files[x].getName();
                                 if(s.endsWith(".java"))
                                {
                                        String s1=s.replace(".java",".txt");
                                                File newFile=new File(s1);
                                               System.out.println(newFile.getName());
                                      System.out.println(newFile.renameTo(files[x]));
                                }
                       }
                }
        }

该程序目的是应用递归遍历的方法修改一个目标文件夹dir下所有java文件名,将他们全部改为txt型的文件名,我的问题是,运行没有问题,但为什么就不能将文件名修改成功呢

作者: 张森    时间: 2013-1-8 13:01
  1. public static void changeFilename(File dir)// 该方法应用递归遍历的方法修改一个目标文件夹dir下所有java文件名
  2.         {
  3.                 System.out.println("-" + dir.getName());
  4.                 File[] files = dir.listFiles();
  5.                 for (int x = 0; x < files.length; x++) {
  6.                         if (files[x].isDirectory())
  7.                                 changeFilename(files[x]);
  8.                         else if (files[x].isFile()) {
  9.                                 String s = files[x].getName();
  10.                                 if (s.endsWith(".java")) {
  11.                                         String s1 = s.replace(".java", ".txt");
  12.                                         File newFile = new File(dir+File.separator+s1);//<font color="#ff0000">这里应该是路径名,不是简单文件名</font>
  13.                                         System.out.println(newFile.getName());
  14.                                         System.out.println(files[x].renameTo(newFile));//<font color="#ff0000">这里就是具体的API  形参就是你要重命名的路径名</font>
  15.                                 }
  16.                         }
  17.                 }
  18.         }
复制代码

作者: 张森    时间: 2013-1-8 13:06
LZ,我刚刚看了API
1、你的方法调用弄反了,APIpublic boolean renameTo(File dest) 这里的dest是你要重命名的路径名,只是新的那个名字,不是指原来的名字,是由原来的名字掉用这个函数,你刚刚弄反了
2、新的名字,应该是个完整的路径名,并不是一个简单的字符串。是路径名  代码如下
  1. public static void changeFilename(File dir)
  2.         {
  3.                 System.out.println("-" + dir.getName());
  4.                 File[] files = dir.listFiles();
  5.                 for (int x = 0; x < files.length; x++) {
  6.                         if (files[x].isDirectory())
  7.                                 changeFilename(files[x]);
  8.                         else if (files[x].isFile()) {
  9.                                 String s = files[x].getName();
  10.                                 if (s.endsWith(".java")) {
  11.                                         String s1 = s.replace(".java", ".txt");
  12.                                         File newFile = new File(dir+File.separator+s1);//-------------这里是路径名,并不是简单的s1
  13.                                         System.out.println(newFile.getName());
  14.                                         System.out.println(files[x].renameTo(newFile));//-------------这里是函数调用,由原来的file调用,传入新的file用以重命名
  15.                                 }
  16.                         }
  17.                 }
  18.         }
复制代码

作者: 张森    时间: 2013-1-8 14:33
张森 发表于 2013-1-8 13:06
LZ,我刚刚看了API
1、你的方法调用弄反了,APIpublic boolean renameTo(File dest) 这里的dest是你要重命 ...

你好像多给了一分:lol  就这样吧  谢了  ;P
作者: 打工人    时间: 2013-1-8 15:25
张森 发表于 2013-1-8 14:33
你好像多给了一分  就这样吧  谢了

:lol:lol:lol:lol
作者: 张森    时间: 2013-1-8 15:37
冯海霞 发表于 2013-1-8 15:25

不是吧 你还真给扣了 下次还是做个糊涂人的好:'(




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