作者willieliao (Willie Liao)
看板java
标题Re: [虫?] ClassLoader 和 读取 jar 中的档案的问题
时间Sat Oct 6 09:29:37 2007
※ 引述《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)
1F:推 slalala:感谢 搞定了^^ 10/06 14:39
2F:→ slalala:我错在写成is.length() 10/06 14:39