Voce nao precisa saber o diretorio do seu .class para conseguir carregar recursos relacionados a ele, mesmo porque, o que voce faria com essa informacao no caso da sua classe ter sido carregada de outra maquina (lembre-se, Java _incentiva_ o carregamento de classes via rede), ou qual seria o diretorio se a sua classe tivesse sido carregada de dentro de um .jar (que eh a forma padrao de distribuir aplicacoes Java)? O responsavel por carregar as classes eh o ClassLoader, e ele sabe carregar os recursos associados a uma classe (sejam eles imagens, arquivos de configuracao, ou o que voce quiser), mesmo que esses recursos sejam carregados via rede. De uma olhada na documentacao as classes java.lang.ClassLoader e java.lang.Class, e veja os metodos getResource e similares. Um metodo estatico para fazer o que voce quer seria: public static InputStream carregaRecurso(String nomeDaClasse, nomeDoRecurso) { Class c = null; try { c = Class.forName(nomeDaClasse); } catch (Exception ex) { // isso nao deve acontecer se a sua classe existir System.out.println("Classe "+nomeDaClasse+ " nao encontrada."); return null; } InputStream is = c.getResourceAsStream(nomeDoRecurso); return is; } Para usar voce faria: [...] InputStream is = carregaRecurso("seu.package.SuaClasse", "nomeDoArquivo"); if (is != null) { BufferedReader rd = new BufferedReader(new InputStreamReader(is)); // le a partir do rd } [...] Observe que nomeDaClasse eh o fully qualified class name (seu.package.SuaClasse) e eh bom voce verificar o nome que voce tem que dar para nomeDoRecurso na documentacao, que isso depende de algumas coisas (na verdade, depende do ClassLoader que esta sendo usado, mas isso eh uma outra questao que nao vale a pena entrar no merito nesse momento). Em geral, voce usa um nome separado por "/" que pode ser ou um nome absoluto (que inicia com "/"), nesse caso o recurso sera carragado a partir do diretorio "/" contexto da sua classe (ou seja, a partir do diretorio que contem os seus packages), ou voce passa um nome relativo (que nao comeca com "/") e nesse caso o recurso sera carregado de um diretorio a partir do diretorio que contem a sua classe. Portanto, para um arquivo no mesmo diretorio que sua classe, voce em vai passar apenas "nomeDoArquivo" para o metodo ai em cima. Observe que isso mostra o quao importante eh voce sempre incluir suas classes em packages, o que muita gente deixa de fazer. Bruno. [EMAIL PROTECTED] wrote: > Alguem sabe se existe uma forma de descobrir em qual diretorio esta o arquivo >".class" de um objeto instanciado? > > Por exemplo: > // Qual o diretorio do arquivo MinhaClasse.class que foi carregado > // pela JVM para instanciar o objeto "obj"? > MinhaClasse obj = new MinhaClasse(); > > Tenho um arquivo de configuracao "arquivo.config" gravado no mesmo diretorio da >classe "MinhaClasse.class". Esta classe tem um metodo que faz a leitura do >arquivo.config. Gostaria fazer com que este metodo funcione independente do diretorio >de instalacao da classe, ou seja, nao importa em qual diretorio a classe >"MinhaClasse.class" esteja, o arquivo de configuracao "arquivo.config" sempre sera >achado, pois os dois sempre estarao juntos. > > Abracos, > Wilton > > > ------------------------------ LISTA SOUJAVA ---------------------------- > http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP > dúvidas mais comuns: http://www.soujava.org.br/faq.htm > regras da lista: http://www.soujava.org.br/regras.htm > para sair da lista: envie email para [EMAIL PROTECTED] > ------------------------------------------------------------------------- > > > Bruno. ______________________________________________________________________ Bruno Peres Ferreira de Souza Brazil's JavaMan http://www.javaman.com.br mailto:[EMAIL PROTECTED] if I fail, if I succeed, at least I live as I believe ------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm para sair da lista: envie email para [EMAIL PROTECTED] -------------------------------------------------------------------------