【初心者】Java質問・相談スレッド103【大歓迎】at TECH【初心者】Java質問・相談スレッド103【大歓迎】 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト620:デフォルトの名無しさん 07/07/15 01:21:06 rubyもgroovyもいらない子 621:デフォルトの名無しさん 07/07/15 12:13:26 データの読み込みについて質問です。 一度ByteにしてArrayListに格納して、取り出してbyteに変換しています。 もっとスマートな方法(このクラスを使った方が良い等)があれば教えて頂けないでしょうか。 ArrayList byteArray = new ArrayList(); int readByte = 0; while (readByte != -1) { readByte = stream.read(); if (readByte != -1) { byteArray.add(new Byte((byte) readByte)); } } Byte[] byteBig = (Byte[]) byteArray.toArray(new Byte[0]); byte[] byteTmp = new byte[byteBig.length]; for (int i = 0; i < byteBig.length; i++) { byteTmp[i] = byteBig[i].byteValue(); } 622:デフォルトの名無しさん 07/07/15 12:49:22 >>621 スマートとかじゃなくて、それじゃ落第です。動くだけ。性能でなさ杉。 1.もし読み込み対象データのサイズは先にわかるのであれば、1発バルクリ ードしておしまいのはず。そんな遅そうな処理をする必要はないです。 多分こんな感じで。 File target = new File("..."); byte[] buffer = new byte[target.length()]; FileInputStream in = new FileInputStream(target); in.read(buffer); I/O-CPU間のスイッチが発生しないので、速いですよ。 2.サイズがわからないにしても、1バイトずつ読むのはやめなさい。 たとえば100バイトずつ読めば、I/O-CPUスイッチの回数は1/100です。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch