2013-03-10 66 views
0
TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
    Transformer transformer; 
    try { 
     transformer = transformerFactory.newTransformer(); 
     DOMSource source = new DOMSource(doc); 
     URL url = getClass().getResource("CustomerDedupeRules.xml"); 
     StreamResult result = new StreamResult(new File(url.getPath())); 
     transformer.transform(source, result); 
    } catch (Exception e) { 
     logger.error(e); 
    } 

我想更新存在於我的類文件夾中的xml文件。但我得到文件沒有發現異常,如果我使用url.getPath()或url.getFile()。 代碼工作正常,如果我硬編碼的文件路徑,而不是使用URL對象。 請告訴我我的方法有什麼問題。我怎麼能從URL對象獲得文件路徑

感謝

回答

0

我不認爲你可以從一個類路徑的資源文件。因爲類路徑資源通常打包在JAR文件中。恕我直言,它沒有任何意義更新當前正在使用的JAR文件。

0

這個文件是哪裏?如果它在一個罐子裏,你應該使用openStream()方法來訪問內容。如果它不在罐子裏,使用getAbsolutePath()打印文件的絕對路徑並驗證它是否存在。

+0

文件不是jar的一部分。它存在於文件系統中。 openstream()工作正常。我正在閱讀文件並在更新之前檢查它(我沒有在這裏粘貼這些代碼,但我正在成功完成)。 URL.getPath()返回文件路徑爲:C:\ Program Files \ 20%20(x86)\ Apache%20Software%20Foundation \ Tomcat%206.0 \ webapps \ Dedupe \ WEB-INF \ classes \ com \ infor \ dedupe \ Column_Mappings。 xml:空格用url.getPath()表示爲%20。我認爲這就是爲什麼我得到文件沒有發現異常 – subash 2013-03-10 10:04:50

+0

空白處罰很好。該文件仍應該被讀取。也許問題是空格是URL編碼,File API不能理解。你可以嘗試解碼字符串並將其提供給File API嗎? – 2013-03-10 10:10:25

相關問題