2013-03-10 65 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

相关问题