访问程序文件时出现Java fileNotFoundException

时间:2015-01-08 20:59:31

标签: java file filenotfoundexception

我似乎无法通过这个错误为我的生命。在我以前的帖子中,我试图将属性更新为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(系统找不到指定的路径)

我不确定如何解决此错误。您会认为它是否可以读取它并在第一个文件调用中找到它,第二个文件调用应该正常工作?

更新:我尝试了其他一些方法。

因此,当我将文件路径设置为“C:\ Program Files \ test.xml”时,File.exists将返回ture,以及读取和写入。如果我将%20添加到程序文件路径,它们都返回false“E.g 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?

3 个答案:

答案 0 :(得分:1)

我明白了。在对其他有类似问题的人进行了大量阅读之后,我必须做以下工作才能使其正常工作。

  StreamResult result = new StreamResult(file.getPath());
  transformer.transform(source, result);

它现在有效。奇怪,但它确实有效。

答案 1 :(得分:0)

而不是使用:

String filePath = "C:\Program%20Files\Test.xml";

使用此:

String filePath = "C:\\Program%20Files\\Test.xml";

问题在于解析“\” charatecter

编辑: 我对Java的文件I / O没有那么多的经验但是我发现了这个:

File file = new File(filePath);
System.out.println(file.canRead());  // false
System.out.println(file.canWrite());  // false

这可能是这里问题背后的原因(Excpert的智慧在这里需要澄清)。

答案 2 :(得分:0)

似乎File无法找到该文件,我认为是因为路径中存在问题。

路径可以是相对的或绝对的。您可以尝试使其相对,并检查它是否有效...