Quero gravar um arquivo INI no mesmo diretório onde estão os .class, mas eu não quero especificar o diretório no código. Se eu apenas dou o nome do arquivo que estou criando (“nome.ini”) no FileWriter
FileWriter wr = new FileWriter (inifile);
ele é gravado no diretório onde eu chamei o aplicativo (java meuaplicativo). Podem me ajudar?[/code]
Há como sim aborges… Através do carregador da classe (o classloader).
Veja, esse método eu adaptei de um post no java.net. Eu uso para obter o diretório de partida do JAR da minha aplicação. Assim eu posso consultar sub-diretórios que partem (filhos) do diretório de partida (/conf, por exemplo).
[code]
/**
* Obtém o diretório onde está contido o diretório de partida (o diretório que contém o
* arquivo JAR da aplicação). Este fragmento de código foi obtido de replies do fórum
* java.net e adaptadado para executar a ação mencionada.
*/
public String getStartupDir() {
String path = "";
String baseURL = getClass().getResource("/images").getFile();
/* "/images" is an existing dir inside jar */
try {
baseURL = URLDecoder.decode(baseURL, "ISO-8859-1");
if (baseURL.startsWith("file:"))
baseURL = baseURL.substring(baseURL.indexOf(":")+1);
File fBase = new File(baseURL); // original URL ref. to jar archive
File jarFile = fBase.getParentFile(); // jar file reference
File rootDir = jarFile.getParentFile(); // root directory which contains jar file
path = rootDir.getCanonicalPath();
}
catch (Exception e) {
e.printStackTrace();
}
return path;
}[/code]
rlicciardo, se a sua aplicação for apenas um ou mais arquivos .class (em um diretório qualquer – se não estiver montada em um arquivo JAR)… use o seguinte:
String path = "";
File f = new File(".");
try {
path = f.getCanonicalPath();
}
catch (Exception e) {
// trate a excecao...
}
Eu vou ter que montar o jar. (puxa, estou apanhando com isso tbm, para determinar no manifesto qual é o main… num tô conseguindo). E como eu executo o jar se o main precisa de parametros? O jar pode ser instalado em qq diretorio?