希望你能帮我看一些代码:
public void Copy(Path sourcepath,
Path targetpath) throws IOException {
DateFormat dateFormat = new SimpleDateFormat("yyyymmdd");
File origfile = targetpath.toFile(); // Changes targetpath to file
String name = origfile.getName(); // Gets the name of the file to be updated
File file1 = new File(targetpath.toString() + "." + dateFormat.format(Calendar.getInstance().getTime())); //Create a new file instance with the name of the old file + date
origfile.renameTo(file1); //Rename the original file
origfile.createNewFile(); //Backup the original file
Files.delete(targetpath); //Delete the original file
Files.copy(sourcepath, targetpath);
}
现在一切正常,备份工作和复制工作。我的初衷是将正在复制的文件重命名为正在备份的文件。(因此字符串名称 = origfile.getName();
这是我的代码:
File file2 = new File(name);
File srcfile = sourcepath.toFile();
srcfile.renameTo(file2);
现在,这在一定程度上起作用了,过了一段时间我开始收到 IOException 错误,所以经过几个小时的努力。我放弃了,只是删除了重命名部分。
瞧,它在复制时仍然重命名文件。
现在我的问题是:Files.copy 能做到吗?这里发生了一些神秘的事情吗?它完全符合我的要求,但我很困惑。为什么我的代码有效?
是的,我想知道,以防它中断或停止工作。我不能有什么工作,不知道为什么!
编辑:
抱歉发帖时有点着急,让我把我的问题说得更清楚一点:
我的意图是将我的源路径重命名为正在备份的文件的原始名称。我有重命名它的代码,但它抛出了一个 IOException,所以我删除了它。我只使用了 Files.Copy,所以我假设 sourcepath 会保留它的原始值,并且只复制我拥有的 for 循环中的每个实例。但是不,它会完美地重命名为要备份的每个文件的原始名称。在哪里以及如何?