我有一个临时文件在 /tmp
目录中,我想将其归档到其他地方,因此我尝试了以下命令:
import java.nio.file.Files;
[...]
Path source = Paths.get("/tmp/path/to/file_123456789.xml");
Path destination = Paths.get("/path/to/archive/dir/file.xml");
Files.copy(source, destination).
这个失败是因为:
/path/to/archive/dir/file.xml 不是一个目录
我知道这个问题!但是我只想选择目标文件的名称。
到目前为止,我有一些解决方案,但都不令我满意:
- 使用 Files.createTempDirectory 创建临时目录,然后将临时文件移动到该目录中,重命名它,然后将其移动到目标目录。 - 将临时文件复制到存档目录中,然后在那里重命名它。但如果重命名失败,存档目录中会有一些垃圾文件。 - 在存档目录中创建一个空文件,然后手动将源文件的内容复制到其中。
可能存在更简洁的解决方案。你知道吗?
/path/to/archive/dir
实际上是一个文件。别问我怎么会变成文件的 :) 这个错误信息有些误导人。我会写一个自己的回答并提供测试用例来复现该问题。 - Arnaud Denoyelle