java file.renameTo() 方法失败为什么?修改文件名失败。。。急在线。 5

我就是想修改下文件的名称,结果用了这个方法发现失败。。。刚测试了下,是放在循环下修改文件名,可能是循环速度太快?导致文件名修改的时候有问题,打断点,慢点过去就没问题。... 我就是想修改下文件的名称,结果用了这个方法发现失败。。。
刚测试了下,是放在循环下修改文件名,可能是循环速度太快?导致文件名修改的时候有问题,打断点,慢点过去就没问题。
展开
 我来答
断剑且春秋
2012-07-22 · TA获得超过271个赞
知道答主
回答量:62
采纳率:100%
帮助的人:44.1万
展开全部
我建议你:
1 File#renameTo(File)方法会返回失败(false),文件没有移动,又查不出原因,再后来干脆弃用该方法,自己实现一个copy方法,问题倒是再也没有出现过。
2.我给你大个比方0--------
从C盘到E盘失败了,从C盘到D盘成功了。因为我的电脑C、D两个盘是NTFS格式的,而E盘是FAT32格式的。所以从C到E就是上面文章所说的"file systems"不一样。从C到D由于同是NTFS分区,所以不存在这个问题,当然就成功了。

-----你可以试试这个:

 /**
  * 使用FileChannel拷贝文件
  *
  * @param srcFile
  * @param destFile
  * @throws IOException
  */
  public static void copyUseChannel(File srcFile, File destFile)
  throws IOException {
  if ((!srcFile.exists()) || (srcFile.isDirectory())) {
  return;
  }
  if (!destFile.exists()) {
  createFile(destFile.getAbsolutePath());
  }

参考资料: 来源:考试大-计算机二级考试

ChangeListener
2017-08-13 · TA获得超过165个赞
知道答主
回答量:68
采纳率:0%
帮助的人:4.8万
展开全部
rename方法应该是异步的,线程不安全,所以上一个还没修改完成你就循环修改下一个了。要么就在循环里重新new一个file对象吧。当然这只是我的猜测。rename方法是不是异步的我也不知道
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
戴的天
推荐于2018-03-01 · TA获得超过108个赞
知道小有建树答主
回答量:142
采纳率:100%
帮助的人:80.8万
展开全部
renameTo方法应该是调用系统本地方法的,所以你要循环调用,就需要给它反应时间
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2017-08-15
展开全部
public boolean renameTo(File dest) renanemTo 里的参数应该是File类型 boolean success = file.renameTo(new File(dir,file.getName()));//这里的new File(dir,file.getName())只是个参数可以这样改
File file2 = new File(dir,file.getName());boolean success = file.renameTo(file2);//里边不一定要new,是个File类型的就行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-07-22
展开全部
在循环更改名字那sleep一会.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式