有个问题,使用 JFileChooser 选择了一个人文件,如果这个文件中间有空格的话,就不能读取,如 C:\\A B\\q.xml 这样就不行了,如果没有空格就可以,如 C:\\AB\\q.xml 这样就正确这个问题应该怎么解决呢? 附上代码
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
JFileChooser fc = new JFileChooser();
fc.showOpenDialog(MASSimulator.getInstance());
File file = fc.getSelectedFile();
System.out.println(file.getAbsolutePath());
DomDemo dd = new DomDemo();
dd.parserXml(file.getAbsolutePath());

解决方案 »

  1.   


    准确的说这样只能修改空格,如果还有其他特殊符号或者中文路径就不行了,保险的办法是用URLEncoder.encode(路径,"utf-8");来编码
      

  2.   

    有空格应该没有问题,DomDemo中操作文件时怎么操作的
      

  3.   


    File file= fc.getSelectedFile(); //得到选择的文件
    //TODO 该处写个判断路径是否含有空格的方法,有就给该路径加上“”(引号),我在项目中遇到过,此法应该可以解决你的问题~
      

  4.   

    String path = "C:\\Program Files\\MySQL\\MySQL Server 5.1\\my-small.ini";
    File file = new File(path);
    System.out.println(file.exists());
    输出为:true
    文件夹名字带空格没问题,我也试过用JFileChooser选取这样的文件。有些情况下空格是会被处理为"%20",检查下代码吧。
      

  5.   

    问题该是这两句里
    DomDemo dd = new DomDemo();
    dd.parserXml(file.getAbsolutePath());
    你可以debug跟踪一下。
      

  6.   

    JFilechooser这个组件我也用过。有空格的路径是可以找到的。问题在于解析文件的代码。
    在XML解析中,空格往往是最容易出现错误的。
    建议你跟踪到解析的地方。如果file对象不为null,说明文件路径可以找到。
      

  7.   

    chooser.getSelectedFile().getAbsolutePath();
      

  8.   

    不要直接得到File的对象,而是先获取Name或Path,再封装为File或其他相关对象就可以了。
      

  9.   

    DomDemo.parseXML是怎么实现的?如果路径有空格或者中文的话,不要使用
    DocumentBuilder builder = new DocumentBuilder();
    builder.parse(fileName);而是builder.parse(new FileInputStream(fileName))DOM的实现对UNICODE支持得不好。