FC2ブログ
HOME   »  スポンサー広告  »  スポンサーサイト   »  Java  »  [Java]InputStreamの読み出しデータを格納した配列型変数の状態 その2

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Java]InputStreamの読み出しデータを格納した配列型変数の状態 その2

以前の記事「InputStreamの読み出しデータを格納した配列型変数の状態」で書いたreadメソッドは、read(byte[] b)というシグネチャについてだったが、readメソッドにはもう1つread(byte[] b, int off, int len)というシグネチャが存在する(更にもう1つread()というシグネチャも存在するが、これは配列型引数がないので割愛する)。

read(byte[] b, int off, int len)は、入力ストリームから最大lenバイトのデータを読み出し、b[off]からb[off+k-1](kはメソッドの戻り値で実際に読み出したバイト数)に格納する、という動作になる。
従って、read(byte[] b)シグネチャはread(byte[] b, int off, int len)シグネチャにてoff=0、len=b.lengthとした場合と等価である。

英大文字の"A"、"B"、"C"、"D"、"E"、"F"、"G"、"H"、"I"の9文字を記したテキストファイル(test.txt)を作成し、以下の様にFileInputStreamクラスのreadメソッド(read(byte[] b, int off, int len)シグネチャ)を使用してこのファイルからデータを読み出す。
public class Main {
    public static void main(String[] args) {
        File file = new File("/*****/test.txt");
        FileInputStream fileInputStream;
        int readDataLength;
        byte[] buffer = new byte[9];
        int index = 0;
        try {
            fileInputStream = new FileInputStream(file);
            for (int i = 0; i < 3; i++) {
                readDataLength = fileInputStream.read(buffer, index, 3);
                index = index + readDataLength;
                System.out.println(i + 1 + "回目");
                System.out.println("読み出したデータ数:" + readDataLength);
                for (int j = 0; j < buffer.length; j++) {
                    System.out.println("buffer[" + j + "]:" + buffer[j]);
                }
                System.out.println("");
            }
            fileInputStream.close();
        } catch (Exception e) {
        }
    }
}
上記の実行結果は以下の通り。


1回目
読み出したデータ数:3
buffer[0]:65
buffer[1]:66
buffer[2]:67
buffer[3]:0
buffer[4]:0
buffer[5]:0
buffer[6]:0
buffer[7]:0
buffer[8]:0

2回目
読み出したデータ数:3
buffer[0]:65
buffer[1]:66
buffer[2]:67
buffer[3]:68
buffer[4]:69
buffer[5]:70
buffer[6]:0
buffer[7]:0
buffer[8]:0

3回目
読み出したデータ数:3
buffer[0]:65
buffer[1]:66
buffer[2]:67
buffer[3]:68
buffer[4]:69
buffer[5]:70
buffer[6]:71
buffer[7]:72
buffer[8]:73


次回読み出し時の格納先先頭インデックス(変数index)を、12行目で直前に読み出したバイト数分ずらしている為、読み出す度にデータが上書きではなく追加される。


関連記事
Comment
Trackback
以前の記事「InputStreamの読み出しデータを格納した配列型変数の状態」で書いたreadメソッドは、read(byte[] b)というシグネチャについてだったが、readメソッドにはもう1つread(byte[] b, int off, int len)というシグネチャが存在する(更にもう1つread()というシグネチ...
Trackback URL
Comment Form
管理者にだけ表示を許可する
プロフィール

まさお

Author:まさお
プログラミングは趣味レベルなので、お手柔らかに。

ブログランキング
ブログランキング参加中。是非クリックお願いします。


にほんブログ村 IT技術ブログ Androidアプリ開発へ

人気ブログランキングへ

ブログランキング



ブログ王

ブログランキング【ブログの惑星】

プログラム人気ブログランキング
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。