Я хочу разбить файл на несколько кусков (в данном случае, попробуйте длины 300) и base64 закодировать его, так как загрузка всего файла в память дает отрицательное исключение массива при кодировании base64. Я попытался, используя следующий код:Base64 encode file chunks
int offset = 0;
bis = new BufferedInputStream(new FileInputStream(f));
while(offset + 300 <= f.length()){
byte[] temp = new byte[300];
bis.skip(offset);
bis.read(temp, 0, 300);
offset += 300;
System.out.println(Base64.encode(temp));
}
if(offset < f.length()){
byte[] temp = new byte[(int) f.length() - offset];
bis.skip(offset);
bis.read(temp, 0, temp.length);
System.out.println(Base64.encode(temp));
}
Сначала, кажется, работает, однако, в какой-то момент он переключается только распечатав «AAAAAAAAA» и заполняет всю консоль с ним, и новый файл поврежден при декодировании. Что может вызвать эту ошибку?
ваше смещение не установлено правильно INT кол = bis.read (температура, 0, 300); offset + = count; – PWC