Я использую массив байтов с методом write() OutputStream
для хранения данных в файл. Для этого я запускаю массив байтов с предопределенным размером. Но я не хочу, чтобы он занимал столько места для каждого InputStream
, размер которого мог быть намного меньше размера массива. Возможно ли каким-то образом сделать массив динамическим, чтобы он регулировал его размер в зависимости от размера InputStream
? у меня есть что-то вроде этого в моем коде:Могу ли я увеличить размер массива байтов?
byte[] b = new byte[20000];
int length;
while ((length = in.read(b))!= -1) {
//writing it to a file
op.write(b, 0, length);
k++;
}
in.close();
op.close();
Здесь in
является InputStream
объекта и op
является FileOutputStream
объекта. Я пытался использовать ArrayLists, но нет прямого метода FileOutputStream
для записи данных в ArrayList, он принимает только byte[]
.
Почему не 'байт [] байт = новый байт [1024];' –
Я просто использовал это в качестве манекена размер. Фактически, я использую его для сохранения изображений из Интернета. Таким образом, 1024 сделал бы. Но тем не менее, большинство изображений составляет 1024. Я не хочу этого лишнего пространства. Если он может каким-то образом динамически настроить свой размер, это будет здорово. – syntheticlaugh
Да, это работает. См. Код, который я опубликовал, и я могу загрузить файлы> 200 МБ без каких-либо проблем с этим небольшим буфером. –