Olá,
Estou tentando descompactar um arquivo zip, que possui vários arquivos de texto.
Eu até consigo extrair os arquivos, o problema é que uma linha do arquivo é descompactada de forma errada.
No compactado a linha 142 está da seguinte forma:
P00544501024316923/02/200824/05/20100140001185
Agora ao descompactar o arquivo a linha é descompactada como:
P00544501024316923/0054402/200824/05/20100140001185
Eu nao consigo entender o porque da diferença. Segue abaixo o codigo utilizado para descompactar o arquivo.
import totalcross.io.DataStream;
import totalcross.io.File;
import totalcross.io.IOException;
import totalcross.io.Stream;
import totalcross.util.zip.ZipEntry;
import totalcross.util.zip.ZipException;
import totalcross.util.zip.ZipFile;
public class FileUtil {
public static void main(String[] args) {
try {
extraiZip("C:\\Teste\\importados.zip");
} catch (ZipException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void extraiZip(String arquivoZip) throws ZipException, IOException {
ZipFile zip = null;
Stream is = null;
DataStream ds = null;
byte[] buffer = new byte[2048];
zip = new ZipFile(arquivoZip);
ZipEntry[] ze = zip.entries();
for (int i = 0; i < ze.length; i++) {
ZipEntry entrada = (ZipEntry) ze[i];
File novoArquivo = new File("C:\\Teste\\" + entrada.getName(), File.CREATE);
// lê o arquivo do zip e grava em disco
is = zip.getEntryStream(entrada.getName());
ds = new DataStream(novoArquivo);
int bytesRead = is.readBytes(buffer, 0, buffer.length);
while (bytesRead != -1) {
ds.writeBytes(buffer, 0, buffer.length);
bytesRead = is.readBytes(buffer, 0, buffer.length);
}
novoArquivo.flush();
novoArquivo.close();
}
zip.close();
}
}
O estranho é que isso só acontece em uma linha.
Desde já agradeço qualquer ajuda…
Obrigado
Diego