请问如何给文件重命名,File类的renameTo()方法可以吗?

timsx123 2008-03-03 03:15:31
如题,我想给一些文件重新命名,可是使用renameTo()方法却没有效果

以下是我重命名部分的代码:
f=new File(filename+dm+"2.xml");
f2=new File(filename+dm+".xml");
if(f2.exists())f2.delete();
boolean t=f.renameTo(f2);
System.out.println(t);

renameTo()的返回值总是false,请问是怎么回事啊?~~
...全文
778 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
timsx123 2008-03-04
  • 打赏
  • 举报
回复
顶一下~~~谁能帮帮我~~~
timsx123 2008-03-04
  • 打赏
  • 举报
回复
还是不知道如何解决,自己顶一下,请大家帮帮忙呀~~
timsx123 2008-03-03
  • 打赏
  • 举报
回复
谢谢两位的指点,我发现问题出在这里了
public void rename(File f){
String path=f.getAbsolutePath();
String path2=path.replaceAll("2.xml", ".xml");
System.out.println("文件路径"+path);
System.out.println("文件路径2"+path2);
File ff=new File(path2);
//if(f2.exists())f2.delete();
boolean t=f.renameTo(ff);
System.out.println("重命名成功:"+t);
}

如果用rename(new File("e://dzhxml//Fhzs//SH6000482.xml")),那么rename成功
如果用rename(new File("e://dzhxml//Fhzs//"+dm+"2.xml")),其中dm="SH600048",那么rename失败
按道理来说这两个new File()应该是一样的阿,怎么会出现这种情况呢...迷糊了,请指教!
exceptionist 2008-03-03
  • 打赏
  • 举报
回复
f=new File(filename+dm+"2.xml");
f2=new File(filename+dm+".xml");
//(f2.exists())f2.delete();这句要去掉,否则你需要重新new f2对象空间。
boolean t=f.renameTo(f2);
System.out.println(t);
hanlujia 2008-03-03
  • 打赏
  • 举报
回复
import java.io.File;
public class rename {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
File f=new File("c:\\2.xml");
File f2=new File("c:\\xu.xml");
if(f2.exists()) f2.delete();
boolean t=f.renameTo(f2);
System.out.println(t);
}catch(Exception e){
System.out.println(e.getMessage());
}
}

}
dracularking 2008-03-03
  • 打赏
  • 举报
回复
false是因为没文件可删
只是现在不能测试
这方法的操作还是platform-dependent的
timsx123 2008-03-03
  • 打赏
  • 举报
回复
去掉delete以后还是不行,而且发现对f使用delete()方法的返回值也是false,奇怪阿.....
dracularking 2008-03-03
  • 打赏
  • 举报
回复
只要路径下无此文件就行
dracularking 2008-03-03
  • 打赏
  • 举报
回复
去掉delete试试
timsx123 2008-03-03
  • 打赏
  • 举报
回复
if(f2.exists())f2.delete();

目标文件不存在阿,我中间这句就是为了检测目标文件是否存在,如果存在就删除掉
timsx123 2008-03-03
  • 打赏
  • 举报
回复
呵呵,能手动改就不会想要写程序来做了阿

刚试了一下用getAbsolutePath()方法取出一个文件的绝对路径,然后进行renameTo()还是返回的false啊
代码如下
f=new File(filename+dm+"2.xml");
String path=f.getAbsolutePath();
String path2=path.replaceAll("2.xml", ".xml");
System.out.println("文件路径"+path);
System.out.println("文件路径2"+path2);
f2=new File(path2);
if(f2.exists())f2.delete();
boolean t=f.renameTo(f2);
System.out.println("重命名成功:"+t);

运行结果:
文件路径E:\dzhxml\Fhzs\SZ0009972.xml
文件路径2E:\dzhxml\Fhzs\SZ000997.xml
重命名成功:false
dracularking 2008-03-03
  • 打赏
  • 举报
回复
it might not succeed if a file with the destination abstract pathname already exists
目标抽象路径如已存在文件则不会成功
yami251139 2008-03-03
  • 打赏
  • 举报
回复
如ls所述。。。
你不好直接手動改啊。。
exceptionist 2008-03-03
  • 打赏
  • 举报
回复
rename要提供完全路径才行

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧