###前提・実現したいこと
現在、InputStreamでわたってくるデータを、一定サイズ毎(5MB)にバッファに格納しています。
その際、元のデータは必ずしも綺麗に5MBに分割できるわけではなく、当然余りのデータも発生します。
今回、ループの最後のデータが1MB以下になった場合は、1つ前のデータと併せてInputStreamに格納したいです。
つまり、データは必ず1MB以上にしたいのです。
しかし、その方法、書き方がわかりません、、、
ご教授頂けませんでしょうか?、、
よろしくお願い致します。
追記:パラメータとしてファイルサイズを渡すことができます。
Long fileSize(現状、使用していません。)
関連の質問
受け取ったInputStreamをReadメソッドで一定のバイト数毎に読み込みアップロードしたい
###該当のソースコード
public static void uploadPer5MBytes(String containerName, String objectName, String PID, String nowStr, InputStream in, Long fileSize) throws IOException { int offset; int bytesRead; byte[] data = new byte[5242880];// 5Mのバッファ boolean next; int outerLoop = 0; int innerLoop = 0; String renban = ""; // ストリームが終わるまでデータを読み込む外側ループ処理 do { // 外側ループ毎の初期化処理 offset = 0; // offsetのリセット next = false; // 5MBのデータを読み込む内側ループ処理 while ((bytesRead = in.read(data, offset, data.length - offset)) != -1) { offset += bytesRead; innerLoop++; if (offset >= data.length) { next = true; break; } } // 読み込んだデータの送信 if (offset >= 1) { ByteArrayInputStream bais = new ByteArrayInputStream(data, 0, offset); // バッファに格納した分アップロード renban = String.format("%03d", outerLoop); } outerLoop++; System.out.println(outerLoop); } while(next); }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/25 05:19