一个路径中带了空格就错了,怎么解决呢

Eniak 2010-02-10 10:19:44
有个问题,使用 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());
...全文
366 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
fatRoach 2010-02-18
  • 打赏
  • 举报
回复
DomDemo.parseXML是怎么实现的?

如果路径有空格或者中文的话,不要使用
DocumentBuilder builder = new DocumentBuilder();
builder.parse(fileName);


而是

builder.parse(new FileInputStream(fileName))


DOM的实现对UNICODE支持得不好。
canoe982 2010-02-18
  • 打赏
  • 举报
回复
不要直接得到File的对象,而是先获取Name或Path,再封装为File或其他相关对象就可以了。
musiclee 2010-02-18
  • 打赏
  • 举报
回复
chooser.getSelectedFile().getAbsolutePath();
Eniak 2010-02-18
  • 打赏
  • 举报
回复
引用 5 楼 py330316117 的回复:
正常的路径也是没有空格的,你输入空格当然不对,可以用正则把空格过滤掉

正则应该怎么用呢?
能举例一下代码么?
铁匠梁老师 2010-02-11
  • 打赏
  • 举报
回复
空格一直是英文软件的通病
naughty610 2010-02-11
  • 打赏
  • 举报
回复
那你写点代码,把空格换成你想换成的字符,找该文件的时候,再分析文件名,如果遇到你预定的那个字符,就再换成空格。。。
Forrest23 2010-02-11
  • 打赏
  • 举报
回复
引用 6 楼 zl3450341 的回复:
引用 5 楼 py330316117 的回复:正常的路径也是没有空格的,你输入空格当然不对,可以用正则把空格过滤掉
把空格过滤掉


把空格过滤掉 那不是找不到文件了?
zwei_006 2010-02-11
  • 打赏
  • 举报
回复
JFilechooser这个组件我也用过。有空格的路径是可以找到的。问题在于解析文件的代码。
在XML解析中,空格往往是最容易出现错误的。
建议你跟踪到解析的地方。

如果file对象不为null,说明文件路径可以找到。
vcshcn 2010-02-10
  • 打赏
  • 举报
回复
有空格应该没有问题,DomDemo中操作文件时怎么操作的
Defonds 2010-02-10
  • 打赏
  • 举报
回复
引用 8 楼 gao11811 的回复:
话说以后取文件夹名字别用万恶的空格,多用'_'
up
gao11811 2010-02-10
  • 打赏
  • 举报
回复
话说以后取文件夹名字别用万恶的空格,多用'_'
lp19890601 2010-02-10
  • 打赏
  • 举报
回复
只要过滤掉空格就好了
zl3450341 2010-02-10
  • 打赏
  • 举报
回复
引用 5 楼 py330316117 的回复:
正常的路径也是没有空格的,你输入空格当然不对,可以用正则把空格过滤掉

把空格过滤掉
py330316117 2010-02-10
  • 打赏
  • 举报
回复
正常的路径也是没有空格的,你输入空格当然不对,可以用正则把空格过滤掉
Aniao 2010-02-10
  • 打赏
  • 举报
回复
引用 2 楼 qianzhimeiying 的回复:
用replace把空格转换成%20


准确的说这样只能修改空格,如果还有其他特殊符号或者中文路径就不行了,保险的办法是用

URLEncoder.encode(路径,"utf-8");来编码
bayougeng 2010-02-10
  • 打赏
  • 举报
回复
引用 2 楼 qianzhimeiying 的回复:
用replace把空格转换成%20

试试,没准。
qianzhimeiying 2010-02-10
  • 打赏
  • 举报
回复
用replace把空格转换成%20
yueguangkai001 2010-02-10
  • 打赏
  • 举报
回复
还没遇到过你这样的问题,出现的错误贴出来看看
focusforce 2010-02-10
  • 打赏
  • 举报
回复
问题该是这两句里
DomDemo dd = new DomDemo();
dd.parserXml(file.getAbsolutePath());
你可以debug跟踪一下。
Z_FEI 2010-02-10
  • 打赏
  • 举报
回复
引用 13 楼 focusforce 的回复:
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",检查下代码吧。

支持!会不会是别的哪里有问题呢?
加载更多回复(4)

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧