黑马程序员技术交流社区

标题: File的renameTo()问题 [打印本页]

作者: 何超    时间: 2013-11-29 20:16
标题: File的renameTo()问题
本帖最后由 何超 于 2013-11-30 09:14 编辑
  1. import java.io.File;


  2. public class B{

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args)throws Exception
  7.         {
  8.                 // TODO Auto-generated method stub

  9.                 File file1=new File("E:\\WOW.txt");
  10.                 File file2=new File("E:\\HOH.txt");
  11.                 System.out.println(file1.renameTo(file2));               

  12.         }

  13. }
复制代码

一直返回false  不管我用的绝对路径还是相对路径 全是false 完全无力
不是 createrNewFile()的问题  会自动创建文件
求解答为什么一直false
作者: 王明明    时间: 2013-11-29 20:41
事实证明 是正确的 我运行过了
应该是你E盘里面没有相对应的文件

QQ图片20131129204007.jpg (48.24 KB, 下载次数: 90)

QQ图片20131129204007.jpg

作者: 王明明    时间: 2013-11-29 20:46
看来是我理解错了 确实是FLASE
作者: 王贺    时间: 2013-11-29 20:47
刚才测试了一下,
楼主代码可以这么写下:
File file1=new File("E:\\WOW.txt");

file1.createNewFile();//我想这句话还是有必要的吧,首先你用这个方法是想代替move这个动作,当然要让这个文件存在吧

            File file2=new File("D:\\HOH.txt");
               
                System.out.println(file1.exists()+" "+file2.exists());//这里返回ture和false
               

                System.out.println(file1.renameTo(file2));  //这里测试是true
希望能帮到你,
还有就是,盘之间的renameto也要注意盘的格式,比如NTFS和FAT32好像不能用这个方法,失败的概率很大。还有就是这个方法要慎用,由于它跟系统关系很大,出错的概率很大
               
作者: 25343215    时间: 2013-11-29 20:49
这个问题我想分两种情况:
  第一中情况:E:\\WOW.txt  要已经存在,这样的话重命名成功就会返回true,如果WOW.txt文件本事不存在那将返回false。
另一种情况:如果E盘下,已经存在WOW.txt 和HOH.txt时,那也是会返回false。因为文件名相同导致的。
                                       
作者: 王明明    时间: 2013-11-29 21:19
我createNewFile()自动创建了 一直是跟楼主一样是FALSE
有一次我自己创建了2个文件为TRUE 但后来我又试了下 又不行了
人品问题 还是系统问题?




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