使用Files.copy时FileAlreadyExistsException

时间:2017-07-10 06:20:27

标签: java file

我正在尝试将文件从InputStream复制到本地目录中。我创建了一个名为test的本地目录,它位于我的包根目录中。

public void copyFileFromInputStream(InputStream is) {
    Path to = Paths.get("test");
    Files.copy(is, to);
}

显然我误解了Files.copy(...),因为它似乎正在尝试创建一个名为“test”的新文件,而不是将文件放入“test”目录中。

如何将文件写入目录?

3 个答案:

答案 0 :(得分:3)

首先创建新目录,然后将流复制到该目录中的新文件:

Path to = Paths.get("mynewdir/test");
Files.copy(is, to);

还要记住,您的InputStream没有文件名,因此在将流写入磁盘时总是需要提供文件名。在你的例子中,它确实会尝试创建一个文件' test',但显然这是一个已经存在的文件夹(因此是Exception)。所以你需要指定完整的文件名。

答案 1 :(得分:1)

' to'参数Files.copy(from, to)是目标文件的路径。

尝试指定测试目录中的文件名:

Path to = Paths.get("test/newfilename");
Files.copy(is, to);

答案 2 :(得分:1)

以下是您的答案:

参考你的代码片段:Paths.get(“test”); 你问的是当前目录中名为“test”的文件的文件路径,而不是目录。 如果要在当前目录下的测试目录下引用该文件。使用以下内容: 要将流数据写入的Paths.get(“test / filename.ext”)。

如果您运行应用程序两次,则会出现“FileAlreadyExistsException”,因为“文件”上的复制方法会写入新文件,如果存在,则不会覆盖它。

我希望这可以帮到你!