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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高阳 中级黑马   /  2013-1-8 01:38  /  1652 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

       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型的文件名,我的问题是,运行没有问题,但为什么就不能将文件名修改成功呢

评分

参与人数 1技术分 +2 收起 理由
冯海霞 + 2 赞一个!

查看全部评分

5 个回复

倒序浏览
  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.         }
复制代码
回复 使用道具 举报
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.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
张森 发表于 2013-1-8 13:06
LZ,我刚刚看了API
1、你的方法调用弄反了,APIpublic boolean renameTo(File dest) 这里的dest是你要重命 ...

你好像多给了一分:lol  就这样吧  谢了  ;P
回复 使用道具 举报
张森 发表于 2013-1-8 14:33
你好像多给了一分  就这样吧  谢了

:lol:lol:lol:lol
回复 使用道具 举报
冯海霞 发表于 2013-1-8 15:25

不是吧 你还真给扣了 下次还是做个糊涂人的好:'(
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马