如何在Java 7中将文件复制到目录?

10

我正在尝试使用Path和Files在Java 7中将多个文件复制到输出目录。但是以下代码无法正常工作:

Files.copy(Paths.get("/my/file.txt"), Paths.get("/my/output/directory/");

它会产生一个“目录非空”错误。

是的,我可以编写代码来直接命名输出文件,或使用Guava,但我正在尝试使用新的Java 7 nio类以最简单的方式完成它。


为什么你不想写 Files.copy(Paths.get("/my/file.txt"), Paths.get("/my/output/directory/file.txt"); 呢?这是正确的做法。 - Dawood ibn Kareem
3个回答

13

最简单的方法:

Path file = /* path to source file */
Path to = /* path to destination directory */
Files.copy(file, to.resolve(file.getFileName()));

6
该命令似乎试图替换目录本身。请尝试在目标目录中指定文件名。
Files.copy(Paths.get("/my/file.txt"), Paths.get("/my/output/directory/file.txt"));

我可以这样做,但是我有大量的文件和一个输出目录,所以只需指定目录就更方便了,就像在执行操作系统文件复制时一样。 - ccleve
2
为什么更方便呢?反正你已经在循环中了。你真的需要添加多少代码来获取文件路径中的“名称”部分,并将其附加到目录上? - Dawood ibn Kareem

4

来自Java 7文档:

copy(Path source, Path target, CopyOption... options)

将文件复制到目标文件

因此,您必须指定目标文件。

我有大量的文件

您可以通过拆分源路径并将其附加到目标文件夹来获取文件名。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接