我似乎無法將這個錯誤傳遞給我的生活。在我以前的帖子中,我試圖將屬性更新爲一個xml文件。我可以很好地讀取文件,但是當我嘗試寫入文件時,我得到一個未找到文件的異常。訪問程序文件時出現Java fileNotFoundException
程序在讀取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」,如C:\ PROGRAM%20Files \的test.xml
所以document = documentBuilder.parse(file);
可以解析該文件只是完美的罰款
當StreamResults改掉打開文件,它thoes文件未找到錯誤,並在程序文件名顯示的%20。
StreamResult result = new StreamResult(file);
transformer.transform(source, result);
java.io.FileNotFoundException: C:\Program%20Files\Test.xml
(系統找不到指定的路徑)
有另一種方式來流結果xml文件而不是StreamResults?
看起來像是將空格字符轉義爲「%20」,並且該路徑「C:\ Program%20Files」可能不存在... – dokaspar
那麼您如何逃離空間? – user1158745
@ user1158745請參閱:http://stackoverflow.com/questions/4746953/replace-space-characters-in-paths-with-what – colti