【Java】バイト(byte)配列をストリームとして扱う!(ByteArrayInputStream/ByteArrayOutputStream)
バイト(byte)配列をストリームとして扱うにはByteArrayInputStreamクラスかByteArrayOutputStreamクラスかを使用します。
ByteArrayInputStreamは、バイト(byte)配列を出力ストリームとして扱うクラスであり、ByteArrayOutputStreamは、バイト(byte)配列を入力ストリームとして扱うクラスです。
InputStreamは、入力ストリームではなく、出力ストリームで、OutputStreamは、出力ストリームではなく、入力ストリームですので間違えないようにしましょう。
今回はByteArrayInputStreamクラスやByteArrayOutputStreamクラスを使って以下の場合でバイト(byte)配列をストリームとして扱っていきます。
⚫︎ バイト(byte)配列を出力ストリームとして扱う場合
⚫︎ バイト(byte)配列を入力ストリームとして扱う場合
目次
ByteArrayInputStreamクラスとは
ByteArrayInputStreamクラスとは、バイト配列を出力ストリームとして使用するクラスになります。
ByteArrayInputStreamクラスの書き方
ByteArrayInputStreamクラスの構文は下記となります。
1 |
import java.io.ByteArrayInputStream; |
ByteArrayInputStreamクラスが使用できるようにByteArrayInputStreamをインポートします。
ByteArrayOutputStreamクラスとは
ByteArrayOutputStreamクラスとはとは、バイト配列を入力ストリームとして使用するクラスになります。
ByteArrayOutputStreamクラスの書き方
ByteArrayOutputStreamクラスの構文は下記となります。
1 |
import java.io.ByteArrayOutputStream; |
ByteArrayOutputStreamクラスが使用できるようにByteArrayOutputStreamをインポートします。
バイト配列をストリームとして扱うサンプルコード
バイト配列をストリームとして扱うサンプルコードを紹介します。
バイト配列を入力ストリームとして扱う場合
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
// バイト配列をストリームとして扱う import java.io.ByteArrayInputStream; public class Main { public static void main(String[] args) throws Exception { // ストリームとして扱うバイト配列 byte[] byteData = "12345ABCDE".getBytes(); // バイト出力ストリーム ByteArrayOutputStream baOutStr = new ByteArrayOutputStream(); // バイト配列を書き込み baOutStr.write(byteData); // バイト出力ストリームに書き込みした内容を表示する System.out.print("・バイト出力ストリームに書き込んだ内容:"); // byte配列を取得し、文字に変換して表示する byte[] outData = baOutStr.toByteArray(); for (byte bt : outData) { System.out.print((char) bt); } } } |
出力結果
・バイト出力ストリームに書き込んだ内容:12345ABCDE
ByteArrayOutputStreamクラスによってバイト(byte)配列を入力ストリームとして扱っています。
バイト配列を出力ストリームとして扱う場合
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
// バイト配列をストリームとして扱う import java.io.ByteArrayInputStream; public class Main { public static void main(String[] args) throws Exception { // ストリームとして扱うバイト配列 byte[] byteData = "12345ABCDE".getBytes(); // バイトスカストリーム ByteArrayInputStream baInStr = new ByteArrayInputStream(byteData); int charCode; // バイト入力ストリームから読み込んだ内容を表示する System.out.print("・バイト入力ストリームから読み込んだ内容:"); while ((charCode = baInStr.read()) != -1) { System.out.print((char) charCode); } } } |
出力結果
・バイト入力ストリームから読み込んだ内容:12345ABCDE
ByteArrayInputStreamクラスによってバイト(byte)配列を出力ストリームとして扱っています。
今回のポイント
ByteArrayOutputStreamでバイト配列を入力ストリームとして扱う
バイト配列を入力ストリームとして扱うにはByteArrayOutputStreamlクラスを使用する「
⚫︎ ByteArrayOutputStreamクラスを使うと、バイト配列を出力ストリームとして使用することができる
⚫︎ 「ByteArrayOutputStream」クラスの出力先はメモリ内で、ストリームを閉じてもメモリ内には値が保持され続けるcloseメソッドを呼び出す必要はない
ByteArrayInputStreamでバイト配列を出力ストリームとして扱う
バイト配列を出力ストリームとして扱うにはByteArrayInputStreamクラスを使用する
⚫︎ ByteArrayInputStreamクラスを使うと、バイト配列を入力ストリームとして使用することができる
⚫︎ ByteArrayInputStreamクラスの入力先はメモリ内で、ストリームを閉じてもメモリ内には値が保持され続ける為、closeメソッドを呼び出す必要はない
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。