Como copiar um arquivo de dentro de um .jar para o sistema de arquivos?

1 resposta
alexandre.olipe

Olá pessoal,

Sou novo no Java e no Guj e estou com um problema que o google ainda não conseguiu me explicar (achei umas coisas mas não consegui implementar… rs).

Estou criando um chat baseado em XMPP (meu Hello World), e já fazem dois dias que estou enroscado em uma função que deve copiar um arquivo de dentro do .jar do meu projeto para o diretório "ext" do da JRE utilizada pelo usuário. Preciso fazer uma cópia do arquivo "todo", mas só encontrei explicações sobre como ler caracteres de um arquivo de origem, criar um arquivo no destino e escrever o conteúdo da origem nele, mas acho que no meu caso isso não serve, pois se trata e outro .jar(os .jar do smack que fazem a parte da conexão XMPP).

O código que verifica os caminhos e que deve copiar o arquivo está assim:

import java.io.*;
import java.util.ArrayList;

public class Chat {
	public static void main(String args[]) {
		
		JanelaLogin janelaLogin = new JanelaLogin();
		
		String s = System.getProperties().getProperty("java.ext.dirs");
		String p[] = s.split("\\;");
		String extDir = p[0];
		ArrayList list = new ArrayList();

		File extDirPath = new File(extDir);
		
		if (extDirPath.exists()) {
			File filesPath[] = extDirPath.listFiles();
			String tempFiles;

			for (int i = 0; i < filesPath.length; i++) {
				tempFiles = filesPath[i].toString().trim();
				String files[] = tempFiles.split("\\\\");
				list.add(i, files[files.length - 1]);
			}
			
			if(list.contains("smack.jar") == false){
				// A função de cópia iria aqui.
				
			}
			
			if(list.contains("smackx.jar") == false){
				// A função de cópia iria aqui.
			}
			
			if(list.contains("smackx-jingle.jar") == false){
				// A função de cópia iria aqui.
			}
		} 
		else {
			janelaLogin.mostraErro(extDir);
		}
	
//      janelaLogin.criaLoginPanel();
		
	}

}

Os arquivos .jar do smack estão em uma pasta no projeto chamada "XMPPFiles", paralela à "src" e à "bin" do eclipse.

Preciso fazer algo como uma cópia RAW ou sei lá o que, mas não consegui achar nada ainda que faça isso. Sei que muito provavelmente seria algo no java.io ou no java.nio, mas não consegui achar (ou entender).

Se alguém puder me ajudar, dizendo o que devo usar(não precisa ser nada pronto, mas se me derem um caminho já fico bem agradecido :slight_smile: )…

Valeu mesmo…

1 Resposta

alexandre.olipe

Ninguém tem nenhuma idéia???

Criado 18 de novembro de 2008
Ultima resposta 19 de nov. de 2008
Respostas 1
Participantes 1