我正在使用一種方法爲研究項目動態生成XML文件,它們被放入一個從文件路徑讀取的加載器中,我沒有在加載器是如何處理事務的控制(否則我會傳球,而不是與臨時文件瞎搞內部XML表示),我使用這個代碼來保存文件:getClassLoader()。getResource(filepath)返回一個空指針
File outputs = File.createTempFile("lvlFile", ".tmp.xml");
FileWriter fw = new FileWriter(outputs);
fw.write(el.asXML());
fw.close();
// filenames is my list of file paths which gets returned and passed around
filenames.add(outputs.getAbsolutePath());
現在,我敢肯定,相關文件直接寫入。如果我打印outputs.getAbsolutePath()並通過終端瀏覽以檢查文件,則所有內容都會生成並正確寫入,因此文件系統中的所有內容都是正確的。然而,這段代碼:
URL url = this.getClass().getClassLoader().getResource(_levelFile);
哪裏_levelFile高於生成的文件名我一個,使URL爲空。路徑沒有被損壞或者其他任何東西,打印驗證_levelFile指向正確的路徑。相同的代碼已成功爲其他文件。此外,該錯誤似乎與我是否使用getPath(),getCanonicalPath()或getAbsolutePath()有關,進一步設置outputs.isReadable(true)不會執行任何操作。
任何想法?請不要提供Url url =結構的替代方案,我無法控制此代碼*,我有義務更改我的代碼,以便正確設置網址。
(*)儘管當前代碼在所有其他情況下成功,但至少在沒有重大努力的情況下重寫了我正在使用的大部分框架。
編輯:
同樣,我不能使用替代URL代碼,這是我不能碰裝載機的一部分。另外,即使將臨時文件的路徑設置爲與我成功加載的文件相同的目錄,加載也會失敗。
因爲要創建一個臨時文件,可以自動獲得後您刪除關閉該文件。你檢查了嗎? – Jomoos