Я не вижу ничего плохого в своем коде, но всякий раз, когда я проверяю размер сжатого файла в целевом местоположении, я вижу только, что размер файла был уменьшен только на 2 или 3 КБ, что слишком мало для большие файлы масштабируются примерно до 650 МБ.Как сжать большие файлы с помощью DeflaterOutputStream?
public static void main(String[] args) throws Exception
{
FileInputStream fin = new FileInputStream("filetobecompressed.mp4");
FileOutputStream fout = new FileOutputStream("compressedfile.mp4");
DeflaterOutputStream dout = new DeflaterOutputStream(fout);
byte b[] = new byte[8192];
int r;
float tracker = 0;
while((r=fin.read(b))!=-1)
{
dout.write(b,0,r);
dout.flush();
tracker += (float)r/1000000f;
System.out.println(tracker + "MB compressed");
}
dout.finish();
fin.close();
fout.close();
dout.close();
System.out.println("Compression successful");
}
Заранее спасибо.
BTW каждый раз, когда вы вызываете 'flush()' вы добавляете бит данных со сжатыми файлами. Он приводит к заключению все, над чем он работает в этот момент. –