我的jar中的我的资源文件夹包含一个包含多个二进制文件的目录。我试图使用此代码来提取它们:
try(InputStream is = ExternalHTMLThumbnail.class.getResourceAsStream("/wkhtmltoimage")) {
Files.copy(is, Paths.get("/home/dan/wkhtmltoimage");
}
这是抛出错误
java.nio.file.NoSuchFileException:/ home / dan / wkhtmltoimage
来自
if (errno() == UnixConstants.ENOENT)
return new NoSuchFileException(file, other, null);
UnixException.java中的。即使在Files.java中传递了正确的选项:
ostream = newOutputStream(target, StandardOpenOption.CREATE_NEW,
StandardOpenOption.WRITE);
来自Files.copy
。当然没有!这就是我试图成功的原因。我还不清楚Path
和Files
是否足以做到这一点。提取目录及其所有内容的最佳方法是什么?
因为Files.copy
声明
默认情况下,如果目标文件已存在或者是符号链接
,则复制将失败
(如果目标文件也不存在,显然会失败?)
并列出可能的例外情况,NoSuchFileException
不是其中之一。
答案 0 :(得分:1)
如果您正在使用Guava:
URL url = Resources.getResource(ExternalHTMLThumbnail.class, "wkhtmltoimage");
byte[] bytes = Resources.toByteArray(url);
Files.write(bytes, new File("/my/path/myFile"));
你当然可以把这一切都串成一条线;我宣布变量使其更具可读性。
答案 1 :(得分:0)
不存在的文件实际上可能是您尝试在其中创建文件的目录。
/家庭/旦/ wkhtmltoimage
/home/dan
是否存在?如果你是在Mac上,可能不会。