黑马程序员技术交流社区

标题: 用java怎样实现为文件重命名? [打印本页]

作者: 自己玩    时间: 2012-3-8 13:57
标题: 用java怎样实现为文件重命名?
  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结尾的,磁盘上文件并没有变化,那怎样才能实现文件重命名?
作者: 段玉超    时间: 2012-3-8 14:36
你的代码的意思 1、从指定文件夹中列出所有的子文件夹和文件名称。
                        2.修改 返回的包含“.bov”的字符串 将“.bov”替换为“。rmvb” 然后输出到控制台。
结合你的目的:将文件重命名,然后输出重名名后的文件的文件名来看,用一个词语来形容在贴切不过了 ,那就是“掩耳盗铃”。
    File.list()方法,返回的是一个字符串数组,数组中保存的是 该目录下的子目录和子文件的名字,并不是返回的文件。打个比方,你在银行存了一笔钱,有1000块吧,银行给你一个存折,上面写着一千块,你把存折上的1000改成10000并不能影响你在银行中存钱的数目。
   如果想将文件重命名,可以可以 使用 File.renameTo(File dest) 方法。
作者: 石德志    时间: 2012-3-8 16:19
这是因为你通过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
提示: 作者被禁止或删除 内容自动屏蔽
作者: Destiny    时间: 2012-3-8 21:08
学习学习~!




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