Java SAX使用元字符读取文件名

时间:2014-01-24 14:58:05

标签: java sax dom4j

如何在文件名中读取带元字符的文件? 例如:

  private void readDoc (String path) { 
   try {  
       SAXReader reader = new SAXReader();   
       this.doc = reader.read("_40208#1159SOV.xml");
 } catch(Exception e) {
       this.print(e.getMessage()); } }

我尝试使用:

reader.read(Pattern.quote("_40208#1159SOV.xml");

但它不起作用。想要一个不需要重命名文件的解决方案。 谢谢。

2 个答案:

答案 0 :(得分:2)

read将系统ID视为URL。 #表示URL中的锚点,因此该方法会查找不存在的名为_40208的文件。您可以对参数进行编码

Document doc = reader.read(URLEncoder.encode("_40208#1159SOV.xml", "UTF-8"));
  

文件的路径来自UI对话框(JFileChooser),它返回字符串

在这种情况下,解决方案更简单:SAXReader provides an overloaded method which uses a File reference

Document doc = reader.read(filechooser.getSelectedFile());

答案 1 :(得分:0)

在我的案例中,我找到了更容易解决此问题的方法 reader.read(new File(path)); 完善任何URLEncoder.Hope它会帮助某人