[英]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.