Re: [蟲?] ClassLoader 和 讀取 jar 中的檔案的問題

看板java作者 (Willie Liao)時間17年前 (2007/10/06 09:29), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串3/5 (看更多)
※ 引述《slalala (ptt不是丁丁知識+)》之銘言: : ※ 引述《Nt1 (用功點吧!)》之銘言: : : 好吧…我剛剛在 javaworld 找到解決方法了,就…自問自答一下吧@@" : : 因為在 jar 中的檔案,(如txt),並沒有辦法建構出一個 File 物件來操作, : : 也就是說,不管用什麼方式,只要這個 txt file 在 jar 中,就沒有辨法用 : : File = new File(xxxxx); 的方式來產生,這時候…可以用 ClassLoader 中的 : : getResourceAsStream("filename") 來把這個txt file當成一個 stream 來處理,而不是 : : File物件,再用 InputStreamReader 來接這個 stream 就可以了^^ : : 如: : : ClassLoader cl = this.getClass().getClassLoader(); : : InputStreamReader inr = new InputStreamReader : : (cl.getResourceAsStream("images/01.txt")); : : BufferedReader br = new BufferedReader(inr); : 我也在Javaworld也看到這個問題。 : 只是這個方式用BufferedReader只能讀取文字檔案吧?? : 如果我需要寫入一個特殊格式的檔案,例如*.mp3 *.wav或者*.mdb *.pdf : 請問我該怎麼實作呢? : 因為不管怎樣,包裝成JAR之後,讀取file的方式一定會失敗。 : 所以應該讀取成串流的方式... //從JAR中讀取任何檔案 InputStream is = getClass().getResourceAsStream(".."); byte[] b = new byte[is.available()]; is.read(b); is.close(); //寫出去 FileoutputStream fos = new FileoutputStream(new File("...")); fos.write(b); fos.close(); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 76.111.69.123 ※ 編輯: willieliao 來自: 76.111.69.123 (10/06 09:31)

10/06 14:39, , 1F
感謝 搞定了^^
10/06 14:39, 1F

10/06 14:39, , 2F
我錯在寫成is.length()
10/06 14:39, 2F
文章代碼(AID): #171kK2I9 (java)
討論串 (同標題文章)
文章代碼(AID): #171kK2I9 (java)