Boa tarde.
Estou com um problema:
Tenho essa classe que zipa arquivos e pastas:
[code]import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class CompactadorZip {
//Constantes
static final int TAMANHO_BUFFER = 4096; // 4kb
//método para compactar arquivo
public static void compactarParaZip(String arqSaida,String arqEntrada) throws IOException{
int cont;
byte[] dados = new byte[TAMANHO_BUFFER];
BufferedInputStream origem = null;
FileInputStream streamDeEntrada = null;
FileOutputStream destino = null;
ZipOutputStream saida = null;
ZipEntry entry = null;
try {
destino = new FileOutputStream(new File(arqSaida));
saida = new ZipOutputStream(new BufferedOutputStream(destino));
File file = new File(arqEntrada);
if(file.isDirectory()){
for (File arquivos : file.listFiles()) {
streamDeEntrada = new FileInputStream(arquivos);
origem = new BufferedInputStream(streamDeEntrada, TAMANHO_BUFFER);
entry = new ZipEntry(arquivos.getName());
saida.putNextEntry(entry);
while((cont = origem.read(dados, 0, TAMANHO_BUFFER)) != -1) {
saida.write(dados, 0, cont);
}
}
}else{
streamDeEntrada = new FileInputStream(file);
origem = new BufferedInputStream(streamDeEntrada, TAMANHO_BUFFER);
entry = new ZipEntry(file.getName());
saida.putNextEntry(entry);
while((cont = origem.read(dados, 0, TAMANHO_BUFFER)) != -1) {
saida.write(dados, 0, cont);
}
}
origem.close();
saida.close();
} catch(IOException e) {
throw new IOException(e.getMessage());
}
}
}[/code]
E estou testando assim:
[code]package br.com.ultramax.gestao.instalacao.model;
import java.io.IOException;
public class teste {
public static void main(String args[]){
try {
Compactador.compactarParaZip("c:\\Temp\\UltramaxGestao\\Sistemas\\SistProd\\UltraPDV.zip", "c:\\Temp\\UltramaxGestao\\Sistemas\\SistProd\\UltraPDV");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}[/code]
Porem ele me lança uma exception:
java.io.FileNotFoundException: c:\Temp\UltramaxGestao\Sistemas\SistProd\UltraPDV\DAO (Acesso negado)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at br.com.ultramax.gestao.instalacao.model.Compactador.compactarParaZip(Compactador.java:35)
at br.com.ultramax.gestao.instalacao.model.teste.main(teste.java:9)
Verifiquei que isso ocorre pois ele não está zipando essa pasta DAO, que existe dentro da pasta UltraPDV.
Como eu poderia zipar as subpastas?