【发布时间】:2017-02-04 07:29:39
【问题描述】:
我正在编写一个需要从其资源目录中复制一些静态资产的应用程序。目录结构是这样的;
java/
resources/
assets/
file1.txt
file2.txt
subdir/
file3.txt
我想将 assets 目录(递归)复制到文件系统上的某个位置。如果我使用IOUtils.copy(InputStream in, OutputStream out),那么我会得到一个空指针异常。
InputStream in = getClass().getResourceAsStream("/assets");
OutputStream out = new FileOutputStream(new File("/path/to/write/to"));
IOUtils.copy(in, out);
Exception in thread "main" java.lang.NullPointerException
at java.io.FilterInputStream.read(FilterInputStream.java:133)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:2146)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:2102)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:2123)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:2078)
但是,如果我将输入和输出流更改为文件而不是目录,那么它可以正常复制。
有没有办法将作为 jar 一部分的目录递归复制到文件系统?
【问题讨论】:
-
是的,谢谢,但是我有点想避免将资产压缩到自己的文件中。有没有办法在不这样做的情况下递归复制目录?