我可以使用File对象访问资源吗?

时间:2013-12-13 07:31:59

标签: java file fonts jar embedded-resource

我使用以下代码访问字体资源

      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

1 个答案:

答案 0 :(得分:0)

  

我可以使用File对象访问资源吗?

不,它们不再是文件了。

  

如何枚举JAR中的资源?是否可以使用文件?

每当有人问这个问题时,我想知道为什么在地球上他们需要这样做。构建Jar时,创建一个资源列表并放入Jar中的“已知位置”。在运行时,获取列表,解析它,然后从那里开始。