相关疑难解决方法(0)

如何使用通配符名称发现Java jar中的资源?

我想使用通配符模式发现我的ClassLoader知道的所有xml文件.有没有办法做到这一点?

java classpath

8
推荐指数
3
解决办法
1万
查看次数

从 Jar 文件内的资源中复制/提取目录

我正在编写一个应用程序,需要从其资源目录复制一些静态资源。目录结构是这样的;

java/
resources/
    assets/
        file1.txt
        file2.txt
        subdir/
            file3.txt
Run Code Online (Sandbox Code Playgroud)

我想将资产目录(递归地)复制到文件系统上的某个位置。如果我使用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)
Run Code Online (Sandbox Code Playgroud)

但是,如果我更改输入和输出流,使它们是文件而不是目录,那么它复制得很好。

有没有办法将 jar 的一部分目录递归复制到文件系统?

java file-io

5
推荐指数
1
解决办法
6405
查看次数

通过 FileSystem 对象从文件系统读取

为了列出类路径上特定目录的文件内容,我使用了 Java 7 的新FileSystem功能Path。在一个部署中,该目录直接存储在文件系统上。在另一个部署中,它存储在 JAR 文件中。

我的方法适用于 JAR 文件:我创建一个FileSystem引用 JAR 文件的对象并通过Path对象访问内容。

        ...
        URI dir = ...
        String[] array = dir.toString().split("!");

        try (final FileSystem fs = FileSystems.newFileSystem(URI.create(array[0]), new HashMap<String, Object>()))
        {
            final Path directory = fs.getPath(array[1]);
            try (DirectoryStream<Path> directoryStream = Files.newDirectoryStream(directory))
            {
        ...
Run Code Online (Sandbox Code Playgroud)

由于 dir 对象具有以下值,因此它可以工作:

jar:file:/C:/Users/pax/.../Detector-1.0.jar!/org/.../destinationdir
Run Code Online (Sandbox Code Playgroud)

但在其他环境中,目标目录直接存储在文件系统上。dir 对象包含值:

file:/C:/Users/pax/.../destinationdir
Run Code Online (Sandbox Code Playgroud)

FileSystems.newFileSystem(...)/始终为file:/C:/Users/pax/.../destinationdirURI抛出以下异常:

java.lang.IllegalArgumentException: Path component should be '/'
at sun.nio.fs.WindowsFileSystemProvider.checkUri(WindowsFileSystemProvider.java:68)
Run Code Online (Sandbox Code Playgroud)

如何使用FileSystem.newFileSystem文件系统上的目的地?

是否有更好的方法来独立于其特定类型的存储(文件系统或 JAR 文件)列出目录内容?

java filesystems directory jar path

2
推荐指数
1
解决办法
5577
查看次数

使用 JNA 加载多个依赖库

JNA 有没有办法用 Java 加载多个依赖库?

我通常Native.loadLibrary(...)用来加载一个 DLL。但我想它不会以这种方式工作,因为我将此函数调用分配给了实例成员。

java dll jna

1
推荐指数
1
解决办法
5137
查看次数

标签 统计

java ×4

classpath ×1

directory ×1

dll ×1

file-io ×1

filesystems ×1

jar ×1

jna ×1

path ×1