我使用以下代码访问字体资源
try {
URL url = getClass().getResource("");
log.debug("url = '{}'", url.toString());
URI uri = url.toURI();
log.debug("uri = '{}'", uri.toString());
File dir = new File(uri);
files = dir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.toLowerCase().endsWith(".ttf");
}
});
indice = new Integer[files.length];
delegate = new Descr[files.length];
fileNames = new String[files.length];
fontNames = new String[files.length];
for(int i=0; i<files.length; ++i) {
delegate[i] = new Descr(Font.createFont(Font.TRUETYPE_FONT, files[i]).deriveFont(FontSize));
fileNames[i] = files[i].getName();
fontNames[i] = delegate[i].getFont().getFontName();
}
} catch (URISyntaxException e) {
throw new AssertionError(e);
} catch (FontFormatException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
直到投入JAR
才开始工作。在JAR
中导致错误
IllegalargumentException: URI is not hierarchicalhierarchical
那么,如何枚举JAR
内的资源?是否可以使用File
?
答案 0 :(得分:0)
我可以使用File对象访问资源吗?
不,它们不再是文件了。
如何枚举JAR中的资源?是否可以使用文件?
每当有人问这个问题时,我想知道为什么在地球上他们需要这样做。构建Jar时,创建一个资源列表并放入Jar中的“已知位置”。在运行时,获取列表,解析它,然后从那里开始。