- - PR -
istreamをbyte[]に落としたい
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-11-11 18:34
いつも大変御世話になっております。_(__)_
byte列を操作したくてCで言うmemcpyやmemcat、reallocに相当する関数を探しているのですが見つかりません。このような関数はJavaには無いのでしょうか? やりたいことはサイズがわからないistreamをbyte[]に落としたいのです。 現状では下記のように最初に適当なメモリ領域を確保しているのですが、これだと足りないとき問題になるため、ストリームのサイズに応じて領域を拡大していけるようにしたいです。
| ||||||||||||
|
投稿日時: 2004-11-11 18:44
どうぞ。
[ メッセージ編集済み 編集者: シュン 編集日時 2004-11-11 18:45 ] | ||||||||||||
|
投稿日時: 2004-11-11 18:51
javaにはメモリを扱うクラスはありません。
ByteArrayOutputStreamを使用すればいいのでは? byte[] tmpBuff = new byte[1024]; ByteArrayOutputStream bos = new ByteArrayOutputStream(); int len, off = 0; while((len = is.read(tmpBuff, off, tmpBuff.length)) != -1) { bos.write(tmpBuff, off, len); off = off + len; } byte[] buff = bos.toByteArray(); | ||||||||||||
|
投稿日時: 2004-11-11 20:34
りぼさん、シュンさんありがとうございます。
ByteArrayOutputStreamを使えば一発ですね。 シュンさんのやり方を使わせていただきました。 ありがとうございました。 | ||||||||||||
|
投稿日時: 2004-11-15 11:27
JDK1.4以降なら、あることはありますよ。 http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/nio/ByteBuffer.html ダイレクトバッファと呼ばれるものは、いわば安全なmalloc()です。 メモリマップドファイルなんてのも使えるようになってますよ。 | ||||||||||||
|
投稿日時: 2004-11-16 09:13
シュンさん、情報ありがとうございます。
|
1