Acesso a arquivos dentro do Jar Executavel

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??

http://java.sun.com/j2se/1.3/docs/api/java/util/zip/ZipInputStream.html#ZipInputStream(java.io.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.

é isso ai!

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?