FileInputStream FileNotFound

Olá, estou com problemas com a leitura de um property, nele está contido as informações do banco de dados MySQL, como usuario, senha e banco de dados da aplicação.

Quando tento utilizar a função FileInputStream, o arquivo passado não é encontrado.

Uso o Windows.

[code]
public class LoadProperties {
private Properties props;
private String nomeDoProperties = “config.properties”;
private FileInputStream fis;

protected LoadProperties() {
    String file = new File(nomeDoProperties).getParent();
    try {
        fis = new FileInputStream(nomeDoProperties);
    } catch (FileNotFoundException fnfe) {
        fnfe.printStackTrace();
    }
    props = new Properties();
    try {
        props.load(fis);
        fis.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}[/code]

Este é o código que utilizo para acessar o arquivo, o arquivo está contido no mesmo pacote dessa classe.
Quando tento colocar o caminho completo do arquivo, a leitura é funcional, porém quero fazer esse sistema dinâmico para que rode em qualquer máquina independente de onde esteja instalado o programa.

Se existir uma outra classe que leia arquivos, me diga ou passe um exemplo para que rapidamente eu possa adaptar esse código.

Valeu!

Tenta assim:

 FileInputStream fis =  (FileInputStream) getClass().getResourceAsStream("config.properties");

ou


URL url = new URL(getClass().getResource("config.properties"));

FileInputStream fis = new FileInputStream(new File(url.toURI());

Abraços

Amigo, tentei das duas formas e não consegui fazer funcionar!

O código seria este:

public class LoadProperties {

    private Properties props;
    private String nomeDoProperties = "config.properties";
    private FileInputStream fis;

    protected LoadProperties() {
        try {
            fis = (FileInputStream) getClass().getResourceAsStream("config.properties");
        } catch (Exception e) {
            e.printStackTrace();
        }
        props = new Properties();
        try {
            props.load(fis);
            fis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }[/code]

Certo?

Este é o erro que resulta deste código:

[code]Exception in thread "main" java.lang.ExceptionInInitializerError
        at conexao.testeMySQL.main(testeMySQL.java:18)
Caused by: java.lang.NullPointerException
        at java.util.Properties$LineReader.readLine(Properties.java:435)
        at java.util.Properties.load0(Properties.java:354)
        at java.util.Properties.load(Properties.java:342)
        at conexao.LoadProperties.<init>(LoadProperties.java:36)
        at conexao.PropertiesLoader.getValor(PropertiesLoader.java:27)
        at conexao.manageMySQL.<clinit>(manageMySQL.java:26)
        ... 1 more
Java Result: 1

Refencia o pacote que o arquivo esta… tipo se ele estiver no pacote br.com.teste faça:


getClass().getResourceAsStream("/br/com/teste/config.properties");

uso desta forma e aqui funciona

T+

Não ta funcionando =(

Você utiliza o windows?

O código ainda não está compilado em .JAR, teria que compilar em .JAR para este método funcionar?

ERRO ACUSADO:

Exception in thread "main" java.lang.ExceptionInInitializerError at conexao.testeMySQL.main(testeMySQL.java:18) Caused by: java.lang.NullPointerException at java.util.Properties$LineReader.readLine(Properties.java:435) at java.util.Properties.load0(Properties.java:354) at java.util.Properties.load(Properties.java:342) at conexao.LoadProperties.<init>(LoadProperties.java:37) at conexao.PropertiesLoader.getValor(PropertiesLoader.java:27) at conexao.manageMySQL.<clinit>(manageMySQL.java:26) ... 1 more Java Result: 1

Até.

Acho que o caminho está errado.

Coloque o arquivo config.properties em uma pasta na raiz do sistema, por exemplo:

C:\CONFIG\config.properties

no código coloque

private String nomeDoProperties = "/CONFIG/config.properties";

Valeu aí, o primeiro código funcionou!

Meu NetBeans que ta louco, não estava funcionando mesmo…
Dei um Debug e do nada funcionou!! HAHAHAHA

Ninguém merece!

Valeu pela força amigo!

Problema resolvido!

:]