使用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
相关产品推荐
相关产品推荐

