我正在尝试从我的JAR内部读取XML文件。
我的文件夹结构如下:
[root]
src (source folder)
[my java files]
res (source folder)
xml
lorem_ipsum.xml (xml file I wish to read)
我正在尝试使用此代码来读取文件:
DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbfac.newDocumentBuilder();
ClassLoader cl = Thread.currentThread().getContextClassLoader();
InputStream stream = cl.getResourceAsStream(path);
if(stream == null) {
return null;
}
Document doc = db.parse(stream);
但它不起作用。当我将stream
指定为/xml/lorem_ipsum.xml
时,path
保持为空。
答案 0 :(得分:1)
根据您发布的目录结构...
[root]
src (source folder)
[my java files]
res (source folder)
xml
lorem_ipsum.xml (xml file I wish to read)
res
似乎不是一个嵌入式资源。而是尝试使用new File("res/xml/lorem_ipsum.xml")
而不是尝试从类资源上下文中获取InputStream
答案 1 :(得分:0)
我会尝试使用类的ClassLoader,并使用相对于jar结构的完整路径,如:
String path = "res/xml/lorem_ipsum.xml";
// you would rename "MyClass" to the actual name of your class.
ClassLoader classLoader = MyClass.class.getClassLoader();
InputStream is = classLoader.getResourceAsStream(path);
答案 2 :(得分:0)
使用资产管理器
AssetManager assetManager = getAssets();
try {
input = assetManager.open("helloworld.txt");
int size = input.available();
byte[] buffer = new byte[size];
input.read(buffer);
input.close();
// byte buffer into a string
String text = new String(buffer);
txtContent.setText(text);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}