Diretório da aplicação

5 respostas
T

Olás,

estou acabando de escrever um compilador e começando a me preocupar com a distribuição. O problema é que o compilador deve ficar no PATH do usuário, e ele o chamará de qualquer lugar, como é feito com o javac, e eu preciso acessar arquivos que estão no diretório do compilador (alguns arquivos com definições da linguagem, etc)

Como eu posso descobrir o caminho da aplicação durante a execução (não é o ‘.’, é o lugar onde as classes do meu programa estão!)?

Obrigada,
Tays

5 Respostas

m4des

Tenta ai:

/*
 * Este exemplo esta pegando o diretorio deste arquivo
 */

import java.io.*;

public class GetDiretorio {
	
	void Dir() throws IOException{
		
		File file = new File(getClass().getCanonicalName());
		String dir = file.getAbsolutePath();
		
		int ponto = dir.indexOf(".");
		String new_dir = dir.substring(0, ponto)+"\"+dir.substring(ponto+1,dir.length());
		
		System.out.println(new_dir);
		
	}
	
	public static void main(String[] string) throws IOException{
		
		new GetDiretorio().Dir();
		
	}

}

Num testei, mas eu acho q da certo.

Boa Sorte

T

Oi m4des

O getCanonicalName() retorna o nome da classe, mas chamar o getAbsolutePath() no File criado retorna o diretório atual (".") concatenado ao nome da classe…por exemplo, se eu rodar em C:, o string mostrado é “C:\GetDiretorio”

Obrigado pela dica mas ainda não é isso :cry:

davidbuzatto

Vc quer o caminho relativo ao seu aplicativo, e não o da fonte da linguagem do seu compilador?

Já tentou o

getClass().getResource( "caminhoRelativoOuAbsoluto" )

Acho q não entendi seu problema corretamente…

T

davidbuzatto, o “caminhoRelativoOuAbsoluto” só funciona se o caminho passado for absoluto ou relativo ao diretório atual em que o programa foi executado (".")

O que eu preciso descobrir é exatamente o diretório onde estão os arquivos do compilador, e não o diretório atual

Valeu!

T

Olás,

resolvi o problema colocando o arquivo que eu preciso carregar dentro de um JAR que fica no classpath da aplicação. Assim eu consigo carregá-lo usando getClass().getClassLoader().getResourceAsStream() sem precisar definir o caminho do arquivo.

Obrigada pela ajuda!

Criado 9 de dezembro de 2006
Ultima resposta 11 de dez. de 2006
Respostas 5
Participantes 3