从Java 7中运行的jar中提取资源文件夹

从Java 7中运行的jar中提取资源文件夹,java,jar,resources,java-7,nio,Java,Jar,Resources,Java 7,Nio,jar中的resources文件夹包含一个包含多个二进制文件的目录。我正在尝试使用以下代码来提取它们: try(InputStream is = ExternalHTMLThumbnail.class.getResourceAsStream("/wkhtmltoimage")) { Files.copy(is, Paths.get("/home/dan/wkhtmltoimage"); } 这是抛出错误 java.nio.file.NoSuchFileException:/home/d

jar中的resources文件夹包含一个包含多个二进制文件的目录。我正在尝试使用以下代码来提取它们:

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);
文件复制
。当然没有!这就是为什么我要努力做到这一点。我对
路径
文件
的理解还不足以做到这一点。提取目录及其所有内容的最佳方法是什么

混乱,因为
文件的文档。复制
索赔

默认情况下,如果目标文件已存在或是符号链接,复制将失败

(显然,如果目标文件也不存在,它会失败?)

并列出可能的异常,并且
NoSuchFileException
不是其中之一。

如果您使用:

当然,你可以把所有这些都串成一行;我声明了变量以使其更具可读性。

不存在的文件实际上可能就是您试图在其中创建文件的目录

/主页/dan/wktmlotimage


是否存在
/home/dan
?如果您使用的是Mac电脑,则可能不会。

我认为错误在于我的输入流有故障。备用。不,NoSuchFileException引用的是目标
路径
,而不是输入
InputStream
。但将整个资源加载到RAM中不需要。这不会编译。Files.write(byte[].File)不存在,这是在我的版本中抛出的操作;不是JDK的:com.google.common.io.Files。如果您的资源在一个.jar中,我猜它的大小使得短暂使用一点RAM可能没什么大不了的?无论如何;以上只是一个简单的建议;要解决的是你的问题,不是我的。
URL url = Resources.getResource(ExternalHTMLThumbnail.class, "wkhtmltoimage");
byte[] bytes = Resources.toByteArray(url);
Files.write(bytes, new File("/my/path/myFile"));