[英]Java fileNotFoundException when accessing program files
我似乎无法一辈子都忽略这个错误。 在我以前的文章中,我试图将属性更新为xml文件。 我可以很好地读取文件,但是当我尝试对其进行写入时,却得到了文件未发现异常。
该程序在读取XML文件和查找仅写入该文件的属性时没有问题。 经过一段时间的故障排除后,将文件放在Program Files目录中似乎是一个问题。 如果将xml文件移动到C:\\ Temp \\ test.xml,则可以毫无问题地写入该文件。 一旦进入带有任何类型空格的文件夹,它似乎就找不到了。 似乎与StreamResults有关。
File file = new File(filePath);
document = documentBuilder.parse(file);
NodeList sessionNodelist = document.getElementsByTagName("session");
if (sessionNodelist.getLength() > 0)
{
Element sessionElement = (Element) sessionNodelist.item(0);
sessionElement.setAttribute("timeout", "12");
sessionElement.setAttribute("warning", "10");
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(document);
try{
StreamResult result = new StreamResult(file);
transformer.transform(source, result);
}catch(Exception e)
{
logger.info(e.getMessage());
}
}
java.io.FileNotFoundException: C:\\Program%20Files\\Test.xml
(系统找不到指定的路径)
我不确定如何解决此错误。 您会认为,如果它可以读取并在第一个File调用中找到它,那么第二个文件调用应该可以正常工作吗?
更新:我尝试了其他方法。
因此,当我将文件路径设置为“ C:\\ Program Files \\ test.xml”时,File.exists返回ture,以及进行读写操作。 如果我将%20添加到程序文件路径,它们都将返回false”,例如C:\\ Program%20Files \\ test.xml。
所以document = documentBuilder.parse(file);
可以很好地解析文件。
当StreamResults尝试打开文件时,它会显示文件未找到错误,并在程序文件名中显示%20。
StreamResult result = new StreamResult(file);
transformer.transform(source, result);
java.io.FileNotFoundException: C:\\Program%20Files\\Test.xml
(系统找不到指定的路径)
还有另一种方法将结果流传输到xml文件而不是StreamResults吗?
我想到了。 在阅读了大量有关其他人遇到类似问题的信息后,我不得不做以下工作以使其正常工作。
StreamResult result = new StreamResult(file.getPath());
transformer.transform(source, result);
现在可以使用了。 奇怪,但是可以。
而不是使用:
String filePath = "C:\Program%20Files\Test.xml";
用这个 :
String filePath = "C:\\Program%20Files\\Test.xml";
问题在于解析“ \\”字符
编辑:我对Java的文件I / O经验不足,但这是我发现的内容:
File file = new File(filePath);
System.out.println(file.canRead()); // false
System.out.println(file.canWrite()); // false
这可能是此问题背后的原因(此处需要Excpert的智慧来澄清)。
我认为,由于路径问题, File
无法找到文件。
路径可以是相对的或绝对的。 您可以尝试使其相对,然后再检查是否有效...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.