Opa!
Compactei uma pasta com extensão ZIP
coloquei no dentro do meu jar executavel, agora não consigo mais acessá-la, diz que o arquivo zip não existe, o que tenho que fazer para funcionar?
a estrutura esta assim
[quote]/br
/META-INF
arquivos.zip
.classpath
.project
[/quote]
os que tem / na frente são pastas
abraço
manda o código que vc está tentando acessar o zip
File arquivoZip = new File("arquivos.zip");
if (arquivoZip.canRead()){
System.out.println("Arquivo Zip pode ser lido");
} else {
System.out.println("Arquivo Zip nao pode ser lido");
}
trecho que faz a leitura
vc naum teria que colocar um /arquivos.zip ??
vc tem que tomar cuidado com o seguinte o canRead retorna false se não encontrar o arquivo especificado.
isso eu sei, foi por isso que useio o can read para saber se estava encontrando ou não
e não encontrou o arquivo
fiz um teste aki naum achou tb… vou ver oq q ta rolando!!
cara nuam usa o file
eu fiz assim e foi
InputStream inputStream = Teste.class.getResourceAsStream("/tacndlib_2664.log");
Mas sendo um zip, como farei para descompactar o inputStream??
InputStream arquivoZip = getClass().getResourceAsStream("/arquivos.zip");
ZipInputStream zip = new ZipInputStream(arquivoZip);
try {
while ( zip.available() != -1 ) {
ZipEntry entry = (ZipEntry) zip.getNextEntry();
String arquivo = entry.getName();
System.out.println(arquivo);
// pegar arquivo
File destino = new File(programFolder, arquivo);
// extract file if not a directory
if (!entry.isDirectory()) {
// establish buffer for writing file
// write the current file to disk
FileOutputStream fos = new FileOutputStream(destino);
BufferedOutputStream dest = new BufferedOutputStream(fos, BUFFER);
// read and write until last byte is encountered
// copiar para pastadll
dest.write(arquivoZip.read(entry.getExtra()));
dest.flush();
dest.close();
}
}
zip.close();
} catch (IOException e1) {
e1.printStackTrace();
}
não consigo fazer a cópia dos arquivos!
na realidade não sei nem como faze-la
valeu
oq que vc mantem dentro do zip e pq um zip?
Me pergunto a mesma coisa. JARs são arquivos ZIP, só mudaram a extensão. Naõ tem razão pra colocar zip dentro de zip.
Dentro do meu zip estão as bibliotecas que preciso, icone do sistema, e arquivos bat.
futuramente colocarei a jre para fazer um teste.
por isso a necessidade de um zip!
abraço
mas nuam precisa ficar dentro de um zip dentro do jar!!
de duas uma ou o zip fica fora do jar ou os arquivos ficam dentro do jar direto em uma pasta só isso…
naum entendi oq vc falou sobre colcoar a jre para fazer um teste.
programa melhorado
File programFolder = new File(PATH_PROGRAMA);
if ( !programFolder.isDirectory() ) {
programFolder.mkdirs();
}
if ( programFolder.canWrite() ) {
try {
InputStream arquivoZip = getClass().getResourceAsStream(file);
System.out.println(file);
FileOutputStream ostream = new FileOutputStream(programFolder+file);
ObjectOutputStream p = new ObjectOutputStream(ostream);
byte[] buf = new byte[BUFFER];
int len;
while((len = arquivoZip.read(buf)) > 0) {
p.write(buf, 0, len);
}
p.flush();
ostream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
porem ele esta informando que os arquivos que eu copio ficam corrompidos, copiei um .bat e ele colocou caracteres especiais na frente da linha do codigo
o que pode ser?