我正在尝试将文件从InputStream
复制到本地目录中。我创建了一个名为test的本地目录,它位于我的包根目录中。
public void copyFileFromInputStream(InputStream is) {
Path to = Paths.get("test");
Files.copy(is, to);
}
显然我误解了Files.copy(...)
,因为它似乎正在尝试创建一个名为“test”的新文件,而不是将文件放入“test”目录中。
如何将文件写入目录?
答案 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”,因为“文件”上的复制方法会写入新文件,如果存在,则不会覆盖它。
我希望这可以帮到你!