Problema com zip

boa tarde amigos,
o meu problema e o seguinte:
tenho uma classe que recebe um list com os arquivos para compactar e uma string com o
nome do arquivo que sera gerado como compactado
ate blz…

o problema e o seguinte:
quando eu tenho uma quantidade pequena de arquivos ele gera o zip normalmente
quando eu tenho uma quantidade grande ou seja a quantidade em bytes e grande
o rar e gerado sem erro porem
consigo abrir o arquivo.rar ele mostra todos os arquivos la compactados
porem se eu clicar em um deles para abrir ele fala que o arquivo esta corrompido
os arquivos que estou usando para compactar sao arquivos de video…
o arquivo gerado fica com 5 gigabytes
sera que tem alguma limitacao de tamanho para compactar
segue em anexo o codigo…

obrigado desde ja…

[code]import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;

public class JgsZip {

public void Compacta(List<String> ArqEntrada, String ArqSaida)
		throws IOException {
	byte[] buf = new byte[1024];

	String arquivo;

	ZipOutputStream out = new ZipOutputStream(
			new FileOutputStream(ArqSaida));

	int i;

	i = ArqEntrada.size();
	
	for (i = 0; i < ArqEntrada.size(); i++) {
		arquivo = ArqEntrada.get(i);
		FileInputStream in = new FileInputStream(arquivo);

        System.out.println("Compactando...:"+arquivo);
		out.putNextEntry(new ZipEntry(arquivo));
		
		int len;

		while ((len = in.read(buf)) > 0) {
			out.write(buf, 0, len);
		}

		in.close();
	}
	out.close();

}

public void DesCompacta(String ArqZip) throws IOException {
	byte[] buf = new byte[1024];

	ZipInputStream in = new ZipInputStream(new FileInputStream(ArqZip));

	ZipEntry entrada;

	while ((entrada = in.getNextEntry()) != null) {
		OutputStream out = new FileOutputStream(entrada.getName());

		int i;

		while ((i = in.read(buf)) > 0) {

			out.write(buf, 0, i);

		}
		out.close();
	}
	in.close();
}

}
[/code]

O formato .ZIP antigo (que é o que o ZipOutputStream usa) não aceita que sejam criados arquivos maiores que 2 GB nem deixa compactar arquivos maiores que 2GB. O problema é que criar arquivos .ZIP muito grandes, mesmo com um compactador que entende esses arquivos grandes (como o WinZip ou o WinRAR), vai dar problemas na hora de abrir esse arquivo em um programa que só entende o formato antigo .ZIP (como é o caso de um programa que use ZipInputStream).

Eu recomendaria usar um programa externo e um outro formato (por exemplo, o formato .tar.bz2) para gerar arquivos tão grandes.