You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Java更新含空格路径的XML文件时的路径错误排查

解决Java解析带空格路径XML文件的FileNotFoundException问题

这个问题我之前也碰到过,核心原因是DocumentBuilder.parse(String)方法会把传入的字符串当作URI来处理,自动将路径里的空格转成URL编码的%20,但系统实际要访问的是带空格的Test Folder目录,自然就找不到文件了,最终抛出javax.xml.transform.TransformerException,根源就是java.io.FileNotFoundException。

给你两个简单可行的解决方案:

方案1:使用File对象作为parse方法的参数

DocumentBuilder提供了接受File对象的parse重载方法,它会直接处理文件系统路径,不会进行URL编码,完美适配带空格的路径。修改后的代码如下:

String filepath = "C:/UIDriverProject/UIDriverPro/Test Folder/TESTDATA/TEST.dat";
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
// 将字符串路径转为File对象,直接传入parse方法
File xmlFile = new File(filepath);
Document doc = docBuilder.parse(xmlFile);

方案2:通过File生成正确的URI字符串

如果你更倾向于用字符串形式传入,也可以先通过File生成正确的文件URI,再传给parse方法,这样也能避免空格被错误编码:

String filepath = "C:/UIDriverProject/UIDriverPro/Test Folder/TESTDATA/TEST.dat";
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
File xmlFile = new File(filepath);
// 生成正确的文件URI字符串
Document doc = docBuilder.parse(xmlFile.toURI().toString());

两种方案都能解决路径空格导致的文件找不到问题,推荐用方案1,代码更简洁直观。

内容的提问来源于stack exchange,提问作者tsr_qa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:20:07