###前提・実現したいこと
別での質問の続きになります(https://teratail.com/questions/96464)
コーディング方法が分からず、困っています。
InputStreamのデータをReadメソッドで512KB毎に読み取り、取得する。
最後の余りのデータ(512K未満)も取得する。
例)1.7MBのデータを512KBごとに分割する場合、512KB×3と204KB×1に分割される
###現時点のソースコード
処理の概要としては、ループで、512KB毎に読み出し、オフセットを設定し、次回はそこから読み出すというのを繰り返しています。
public static void uploadPer512KBytes(InputStream in, Long fileSize) throws IOException { int offset = 0; int bytesRead = 0; byte[] data = new byte[524288]; int loop = 1; int partSize = data.length; while ((bytesRead = in.read(data, offset, data.length - offset)) != -1) { // 512KB以上 if (partSize <= (fileSize - offset)) { ByteArrayInputStream bais = new ByteArrayInputStream(data); // ??? // 512KB未満 } else { ByteArrayInputStream bais = new ByteArrayInputStream(data); // ??? } loop++ offset += bytesRead; if (offset >= data.length) { break; } } }
現状ここまで書いたのですが、// ???の箇所をどう書いてよいのわかりません。
他の箇所も正しいのか分かりません。
初心者のため説明不足で申し訳ありません。
ささいなことでも大変助かりますので、どうかよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー