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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 自己玩 黑马帝   /  2012-3-8 13:57  /  7131 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public static void getFiles()
  2.         {
  3.                 File file =new File("C:\\Documents and Settings\\自己玩\\My Documents\\暴风影视库\\热播日剧");
  4.                 String [] str=file.list();
  5.                 System.out.println("changdou="+str.length);
  6.                 for (int i=0;i<str.length ;i++ )
  7.                 {
  8.                         String s=str[i];
  9.                         if(s.endsWith(".bov"))
  10.                                 System.out.println( s.replaceAll(".bov",".rmvb"));
  11.                                                                         
  12.                 }
  13.                
  14.         }
复制代码
为什么上面的程序打印出来时以.rmvb结尾的,磁盘上文件并没有变化,那怎样才能实现文件重命名?

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

4 个回复

倒序浏览
你的代码的意思 1、从指定文件夹中列出所有的子文件夹和文件名称。
                        2.修改 返回的包含“.bov”的字符串 将“.bov”替换为“。rmvb” 然后输出到控制台。
结合你的目的:将文件重命名,然后输出重名名后的文件的文件名来看,用一个词语来形容在贴切不过了 ,那就是“掩耳盗铃”。
    File.list()方法,返回的是一个字符串数组,数组中保存的是 该目录下的子目录和子文件的名字,并不是返回的文件。打个比方,你在银行存了一笔钱,有1000块吧,银行给你一个存折,上面写着一千块,你把存折上的1000改成10000并不能影响你在银行中存钱的数目。
   如果想将文件重命名,可以可以 使用 File.renameTo(File dest) 方法。
回复 使用道具 举报
这是因为你通过String [] str=file.list();得到了一个字符数组,这个字符串数组是内存中的数据,和磁盘上的文件已经没有关联了,无论你对该字符串数组中的字符串怎样的操作进行操作都是不会反映到文件上去的

要想对文件重命名要使用到File类的boolean renameTo(File dest) 方法,该方法接受一个File对象做参数

代码如下:

  import java.io.*;
class FileDemo{
public static void main(String [] args)throws Exception{
getFiles("C:\\Documents and Settings\\自己玩\\My Documents\\暴风影视库\\热播日剧");
}
public static void getFiles(String path)

        {

                File file =new File(path);

                String [] str=file.list();

                System.out.println("changdu="+str.length);

                for (int i=0;i<str.length ;i++ )

                {

                        String s=str[i];
                       
                        if(s.endsWith(".bov")){
                             
                              File f = new File(path+"\\"+s);
                            String  newStr = s.replaceAll(".bov",".rmvb");
                              boolean changed = f.renameTo(new File(path+"\\"+ newStr));
                              if(changed){
                                 System.out.println(s+"------>"+newStr);
                                   }
                          
                        }                                                

                }

               

        }

}
回复 使用道具 举报
彭卫红 2012-3-8 16:32:31
板凳
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
学习学习~!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马