好的,所以這是返回null的行。我在創建FileInputStream時做了什麼錯誤?FileInputStream是否爲空?
FileInputStream fin = new FileInputStream(new File(getClass().getResource("data/levellocks.lv").toURI()));
好的,所以這是返回null的行。我在創建FileInputStream時做了什麼錯誤?FileInputStream是否爲空?
FileInputStream fin = new FileInputStream(new File(getClass().getResource("data/levellocks.lv").toURI()));
除非你真的需要一個文件輸入流,你行可以簡化爲:
InputStream in = getClass().getResourceAsStream("data/levellocks.lv");
Class.getResource()和Class.getResourceAsStream是相對於包。爲了得到相對於classpath的根目錄的文件,你可以調用的類加載器的方法:
InputStream in = getClass().getClassLoader().getResourceAsStream("data/levellocks.lv");
你確定該文件是在你的二進制文件夾,旁邊的.class文件?不只是在.java文件旁邊的源文件夾中?
可以爲空的唯一的事情有的getResource( 「數據/ levellocks.lv」),這是調用toURI調用失敗
但是如果文件存在,它仍然可以爲空嗎?因爲我檢查了兩次,它是O_O – William 2010-09-27 21:39:07
它不在你認爲它的區域 – AHungerArtist 2010-09-27 21:39:52
無論的getClass或可能的getResource返回null。其他一切都應該成功或拋出異常。
我其實只是處理了這個問題(我不是專家),但嘗試調試,看看構造函數試圖解析名稱。對我而言,這是全班的一攬子計劃。所以當我把文件放在預期的文件夾中時,它找到了它。
對於你來說可能會有所不同,因爲我使用的是maven。但是我把它放在src/main/resources中,它找不到它。當我在com.work.hin.terminology.match(它是該類的包)的src/main/resources中放置一個文件夾結構時,它找到了它。
究竟哪個部分是'null'?它不能fin,因爲'new'永遠不會返回'null'。 – 2010-09-27 21:38:31