2016-05-31 63 views
0

從作爲可運行jar應用程序導出的Java程序管理文件時遇到問題。從導出爲可運行的.jar文件的Java應用程序中創建,解析和管理XML文件

要加載我已經使用的語法

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應用程序,允許d同樣的事情? (創建新的文件,從文件加載數據,將數據存儲到文件)

我知道,做一個現有的XML文件的DOM解析我可以做

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

但是,只有當我能做到這一點我已經與所有的數據我的XML文件,我仍然不知道該怎麼做的所有其他操作,我需要做...

回答

0

的問題正是在這一行

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

你是試圖加載/創建一個相對路徑的文件,我想這是一個文件,將在你的項目樹中的某處創建,

一旦你創建了一個jar文件,它至少不能被它自己修改,這意味着您不能在運行時創建項目樹中的文件,該文件將在您的jar中創建。

這個文件必須在項目樹之外創建的,是這樣的:

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

是,該文件夾(如「用戶」)中,我要創建文件,並且從中我想加載這些文件在「src」文件夾之外,但仍然不起作用 –

+0

即使它不在您需要放置它的絕對路徑,然後檢查權限您需要對包含目錄具有讀寫權限 –

相關問題