从作为runnable .jar文件导出的Java应用程序创建,解析,管理XML文件

时间:2016-05-31 09:58:08

标签: java xml jar

我在从作为runnable jar应用程序导出的Java程序管理文件时遇到问题。

要加载应用程序的图像,我已经使用了语法

URL url = MainClass.class.getResource("/LoginOrRegister.png");

我已经配置了项目的构建路径,将包含文件的文件夹添加到源代码,并且工作正常。

我的问题出现在以下操作中:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = factory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
...
... (Here I create the whole XML structure)
...
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("users/familyName.xml"));
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
transformer.transform(source, result);

或者

String userPath = "users/familyName.xml";
File file = new File(userPath);         

if (!file.exists()){
    JOptionPane jop = new JOptionPane();
    ......
}

通过从Eclipse执行程序,它可以正常工作,您可以注册并且应用程序创建新的XML文件,在登录后您可以添加,修改和管理您的数据,所以我的问题是:

有没有办法创建一个允许执行相同操作的可运行jar应用程序? (创建新文件,从文件加载数据,将数据存储到文件)

我知道,为了对现有XML文件进行DOM解析,我可以做到

InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("blablab.xml");
Document doc = docBuilder.parse(is);

但是只有当我已经拥有包含所有数据的XML文件时,我才能这样做,我仍然不知道如何进行我需要做的所有其他操作...

1 个答案:

答案 0 :(得分:0)

问题正好在这一行

StreamResult result = new StreamResult(new File("users/familyName.xml"));

您正在尝试使用相对路径加载/创建文件,我猜这是一个将在项目树中的某个位置创建的文件,

一旦你创建了一个jar文件,它至少不能被自己修改,这意味着你不能在运行时创建项目树中的文件,该文件将在你的jar中创建。

此文件必须在项目树之外创建,如下所示:

 StreamResult result = new StreamResult(new File("/opt/data/users/familyName.xml"));