Galera, o meu problema parece ser bem simples, mas não consigo encontrar a solução. :?
Tpw, numa aplicação bem simples que estou fazendo, apenas com propósito de prática, crie uma classe que é responsável por ler um arquivo, capturar um objeto dele, e então carregar algumas propriedades. Acontece que não consigo configurar o path do arquivo.
A classe para leitura é a seguinte:
package ym.util.db;
import java.io.File;
import java.io.ObjectInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
public final class DatabaseConfig
{
private Properties configs;
public DatabaseConfig(File config) throws IllegalArgumentException, IOException
{ read(config); }
public String get(String item)
{ return ((configs.getProperty(item) != null) ? configs.getProperty(item) : new String()); }
public String driver()
{ return get("databaseDriver"); }
public String url()
{ return get("databaseUrl"); }
public String username()
{ return get("databaseUsername"); }
public String password()
{ return get("databasePassword"); }
private void read(File config) throws IllegalArgumentException, IOException
{
try
{
ObjectInputStream file = new ObjectInputStream(new FileInputStream(config));
configs = (Properties) file.readObject();
}
catch(ClassNotFoundException e)
{ throw new IllegalArgumentException("File content no database config."); }
catch(Exception e)
{ throw new IOException("Exception when reading config file - " + e.getMessage()); }
}
}
Como parâmetro eu passo um objeto File que “deveria” conter o arquivo. O arquivo é config.dat.
Então uso:
DatabaseConfig dc = new DatabaseConfig(new File("config.dat"));
Mas sempre retorna o erro:
java.io.IOException
Exception when reading config file - config.dat (O sistema não pode encontrar o arquivo especificado)
Então tentei mudar o path para /config.dat, assim:
DatabaseConfig dc = new DatabaseConfig(new File("/config.dat"));
Mas o mesmo erro ocorre. Já tentei colocar o config.dat tanto na pasta raíz da aplicação quanto na pasta WEB-INF/classes, mas o erro persiste em ambas.
Com quase certeza de que o erro estava no path, resolvi criar um pequeno arquivo para testes. Uma página JSP na pasta raíz da aplicação, usando o mesmo comando: File file = new File(“config.dat”)
E fiz getters nesse objeto File para obter informações:
getAbsoluteFile()
getAbsolutePath()
getCanonicalFile()
getCanonicalPath()
E todos eles retornaram: C:\config.dat
Ou seja, se eu especificar somente o nome do arquivo, este é mapeado a partir do C:, mesmo que eu use uma barra (/config.dat). Eu quero saber como eu faço para que essas classes façam referência a um arquivo a partir do path da própria aplicação, um path relativo. Pq é claro que não é nem um pouco bom usar um path absoluto.
Alguém poderia me ajudar?