1. ホーム
  2. java

[解決済み] Byte[]からInputStreamまたはOutputStreamへの変換

2022-06-25 18:34:56

質問

データベーステーブルにblobカラムがあり、そのカラムに byte[] をマッピングとして使用し、このデータを使用するためには、それを InputStream または OutputStream . しかし、そうすると、内部で何が起こるのかがわかりません。どなたか、この変換を行うときに何が起こっているのか、簡単に説明していただけませんか?

どのように解決するのですか?

バイト配列のI/Oストリームを以下のように作成し、使用します。

byte[] source = ...;
ByteArrayInputStream bis = new ByteArrayInputStream(source);
// read bytes from bis ...

ByteArrayOutputStream bos = new ByteArrayOutputStream();
// write bytes to bos ...
byte[] sink = bos.toByteArray();

標準の JDBC Blob インターフェース を実装している JBC ドライバーを使用している場合 (すべてが実装しているわけではありません)、次のことが可能です。 を接続します。 InputStream または OutputStream をBLOBに変換するには getBinaryStreamsetBinaryStream メソッド 1 で、直接バイトを取得・設定することもできます。

(一般に、例外を処理するために適切な手段を講じ、ストリームを閉じるべきです。 しかし、閉じる bisbos は、ファイル記述子、ソケット、データベース接続などの外部リソースと関連付けられていないため、上記の例では不要です)。

1 - ファイル記述子の setBinaryStream メソッドは実際にはゲッターです。 理解しろ。