Eclipse Plugin中读取资源

By | 2018年4月21日

原文:http://blog.vogella.com/2010/07/06/reading-resources-from-plugin/

经常我们会把一些静态资源存放在bundle里,如何读取bundle里的资源呢?

1. Platform.getBundle(…)

de.vogella.example.readfile是plug-in ID。

Bundle bundle = Platform.getBundle("de.vogella.example.readfile");
URL fileURL = bundle.getEntry("files/test.txt");
File file = null;
try {
    file = new File(FileLocator.resolve(fileURL).toURI());
} catch (URISyntaxException e1) {
    e1.printStackTrace();
} catch (IOException e1) {
    e1.printStackTrace();
}

2. 直接使用URL

URL url;
try {
    url = new URL("platform:/plugin/de.vogella.rcp.plugin.filereader/files/test.txt");
    InputStream inputStream = url.openConnection().getInputStream();
    BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
    String inputLine;
 
    while ((inputLine = in.readLine()) != null) {
        System.out.println(inputLine);
    }
 
    in.close();
 
} catch (IOException e) {
    e.printStackTrace();
}

总结

第二种方法更好,dependency更干净,不用使用Platform类和Bundle类。