Javaはファイルをバイト配列に変換します
キーワード:ファイル、ファイルストリーム、バイトストリーム、バイト配列、バイナリ
要約:最近の作業で遭遇した要件は、HTTPを使用してバイナリデータをサーバーの対応するインターフェイスに送信することと、userIDやファイル(暗号化)などの一連の混合バイナリデータを送信することです。この記事は、Javaを使用してファイルをバイト配列に変換するという知識と要約を記録することを目的としています。
FileInputStream
FileInputStreamを使用してファイルを読み取ります
FileInputStreamは、ファイルから情報を読み取るために使用されるinputStreamのサブクラスです。コンストラクターは、ファイルパスを表すファイルタイプまたは文字列タイプを受信します。
file file = new file( "filepath"); fileinputStream fis = new fileinputStream(file);
bytearrayoutputStream
bytearrayoutputStreamを使用して、fileinputStreamのファイルデータを読み取ります
ByTearRayOutputStreamは、メモリにバッファーを作成するために使用され、「ストリーム」に送信されたすべてのデータをこのバッファに配置する必要があります。
bytearrayoutputStream bos = new bytearrayoutputStream(fis); byte [] b = new byte [1024]; int len = -1; while((len = fis.read(b))!= -1){注:bytearrayoutputStreamの書き込み方法には、3つのオーバーロードされたフォームがあります。
書き込み(int b)
指定されたバイトを書きます
書き込み(byte [] b)
バイト配列全体に書き込みb
書き込み(byte [] b、int off、int len)
バイト配列bに書き込み、Bの外れた添え字から始めて、レンバイトを書き込みます。
2つ目はここでは使用されませんが、3番目のものは使用されます。コードでは、バッファーBへの読み取り数は通常1024です(指定された長さがBが定義されているときに表示されるため)。終了が読み取られた場合にのみ、1024バイトでは十分ではなく、実際の読み取りバイト数が読み取られます。ただし、バッファーに書き込むとき、書き込みの数が指定されていない場合、つまりLENが指定されていない場合、B全体が記述されます。 Bにコンテンツの一部しか存在しない場合でも、1024バイトがまだ記述されます。これにより、結果のバイト配列は、Tobytearrayを使用するときの実際の長さではありません!
これにより、ファイルストリームが入力ストリームからbytearrayoutputStreamに書き込みます。
bytearrayoutputStreamのtobytearray()メソッドを使用して、ファイルのバイト配列を取得します。
byte [] filebyte = bos.tobytearray();
読んでくれてありがとう、私はそれがあなたを助けることができることを願っています。このサイトへのご支援ありがとうございます!