gpt4 book ai didi

java - getResource() 无法读取 jar 中目录的内容

转载 作者:行者123 更新时间:2023-11-30 09:04:21 35 4
gpt4 key购买 nike

我刚刚解决了这个问题,jar 中的主类无法读取文件夹的内容。该类包含

String path = "flowers/FL8-4_zpsd8919dcc.jpg";
try {
File file = new File(TestResources.class.getClassLoader()
.getResource(path).getPath());
System.out.println(file.exists());
} catch (Exception e) {
e.printStackTrace();
}

这里 sysout 返回 false

但是当我尝试这样的事情时它起作用了

    String path = "flowers/FL8-4_zpsd8919dcc.jpg";
FileOutputStream out = null;
InputStream is = null;
try {
is = TestResources.class.getClassLoader().getResourceAsStream(path);
byte bytes[] = new byte[is.available()];
is.read(bytes);
out = new FileOutputStream("abc.jpg");
out.write(bytes);
out.close();
} catch (IOException e) {
e.printStackTrace();
}

getResourceAsStream() 可以读取 jar 中文件夹的路径,但是 getResource() 无法读取,

为什么会这样,这两种方法对jar里面内容的读取机制有什么区别。简单 jar 的内容

enter image description here

最佳答案

getResource()getResourceAsStream()都可以在jar中查找资源,它们使用相同的机制来定位资源。

但是,当您从表示 jar 中的条目的 URL 构造一个 File 时,File.exists() 将返回 File 不能用于检查 jar/zip 中的文件是否存在。

您只能使用位于本地文件系统(或附加到本地文件系统)上的 File.exists

关于java - getResource() 无法读取 jar 中目录的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25258144/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com