我正在尝试在Java中使用 renameTo 方法,但它只返回false并且不移动文件。
我错过了一步吗?有没有办法找出它为什么不移动文件? 删除方法也没有做任何事情。
这是我的代码,展示了我如何使用它:
private void archiveOutputFile(File outputFile) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddhhmmssS");
String timeStamp = formatter.format(new Date());
String subFolderName = "Archive" + timeStamp;
File subFolder = new File(outputFile.getParent(),subFolderName);
subFolder.mkdir();
File newFile = new File(subFolder,outputFile.getName());
//outputFile.deleteOnExit(); //Doesn't work, nor does .delete()
boolean success = outputFile.renameTo(newFile);
}
以下是一些系统信息:
Java:1.6.0_21; Java HotSpot(TM)客户端VM 17.0-b17
系统:在x86上运行的Windows XP 5.1; CP1252; en_US(nb)
答案 0 :(得分:5)
您无法重命名或删除Windows认为已打开的文件。
答案 1 :(得分:1)
在将文件移入子文件夹之前,您需要创建子文件夹(取消注释subFolder.mkdir();)
答案 2 :(得分:0)
我建议你检查是否存在。 public boolean exists()
答案 3 :(得分:0)
如果我在该行中发表评论
,它是有效的subFolder.mkdir();