Como copiar um arquivo zip?

Eu gostaria de ler um arquivo ZIP e depois criar um novo arquivo, uma copia identica do arquivo que funcione… o codigo que eu fiz aparentemente faz a copia mas o arquivo fica corrompido, se algume puder me dar uma ajuda abaixo o codigo que eu fiz…

[code]//Inicio da leitura do arquivo

FileInputStream fin = new FileInputStream(“arquivo1.zip”);
byte b[] = new byte[fin.available()];
fin.read(b);
String texto = new String(b);
String linhas[] = texto.split("\n");

//início da listagem na tela

for (int i = 0; i < linhas.length; i++) {
System.out.println(linhas[i]);
}

//final da listagem na tela

//final da leitura do arquivo

fin.close();

//inicio da escrita do arquivo

FileOutputStream fou = new FileOutputStream(“arquivo2.zip”);
fou.write((texto).getBytes());
fou.close();

//final da escrita do arquivo

}catch(IOException e){
e.printStackTrace();
}[/code]

Você não pode trabalhar com strings e arrays de bytes. Use apenas um array de bytes no seu processo de cópia. É que new String(byte[]) é uma operação que corrompe o seu array de bytes, não importando a codificação (segundo parâmetro do construtor) usada.

Além disso, não se deve copiar TODO o arquivo para memória.