Olá, não estou conseguindo ler um arquivo .properties.
Estou fazendo assim:
InputStream stream = this.getClass().getResourceAsStream("mysql.properties");
Properties p = new Properties();
p.load(stream);
mas o java insiste em dizer que o arquivo não existe… mas o arquivo esta lá.
… o arquivo esta no mesmo pacote.
Oi,
prop = new Properties();
inStream = null;
try{
inStream = new FileInputStream("mysql.properties");
} catch(FileNotFoundException err){
err.printStackTrace();
}
try{
prop.load(inStream);
} catch(IOException err){
err.printStackTrace();
}
e coloque o arquivo no pacote padrão (/src)
RafaelGlauber, beleza? mas o arquivo pode ficar fora do pacote? E quando eu quiser exportar ele para outra aplicação?
Oi,
O construtor é sobrecarregado, no caso estou usando ele com String, logo tenho que fornecer a localização do arquivo. Note que só coloquei o nome do arquivo, logo o mesmo deve estar no classpath da aplicação para que a mesma o encontre, caso queira colocar dentro de uma pasta não visível pela aplicação terá que colocar o caminho completo do arquivo, lembrando que a sintaxe do caminho entre as plataformas mudam, exemplo:
linux: /usr/local/resources/mysql.properties
windows: c:\app\resources\mysql.properties
o caminho é por ai.
não deu certo não…
Peço que observem minha classe e meu properties
mysqlprops.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost/test
user=root
password=
MysqlProperties.java
package org.willian.jdbc;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class MysqlProperties {
private String driver;
private String url;
private String user;
private String password;
public MysqlProperties() throws IOException {
this.driver = this.getProperties().getProperty("driver");
this.url = this.getProperties().getProperty("url");
this.user = this.getProperties().getProperty("user");
this.password = this.getProperties().getProperty("password");
}
private Properties getProperties() throws IOException {
InputStream inStream = this.getClass().getResourceAsStream("mysqlprops.properties");
Properties props = new Properties();
props.load(inStream);
return props;
}
public String getDriver() {
return driver;
}
public void setDriver(String driver) {
this.driver = driver;
}
public String getUrl() {
return url;
}
public String getUser() {
return user;
}
public String getPassword() {
return password;
}
}
eu já não sei mais o que fazer… a dois dias atrás eu fiz desse mesmo jeito e deu certo agora não deu mais. Alguém pode me ajudar?
Oi,
[code]package org.willian.jdbc;
import java.io.IOException;
import java.io.InputStream;
import java.io.FileInputStream; // adicionado
import java.io.FileNotFoundException; // adicionado
import java.util.Properties;
public class MysqlProperties {
private String driver;
private String url;
private String user;
private String password;
public MysqlProperties() throws IOException {
this.driver = this.getProperties().getProperty("driver");
this.url = this.getProperties().getProperty("url");
this.user = this.getProperties().getProperty("user");
this.password = this.getProperties().getProperty("password");
}
private Properties getProperties() throws IOException {
Properties props = new Properties();
InputStream inStream = null;
try{
// se tiver no classpath faça assim
inStream = new FileInputStream("mysqlprops.properties");
// senão
inStream = new FileInputStream("c:\pasta\mysqlprops.properties");
} catch(FileNotFoundException err){
err.printStackTrace();
}
try{
props.load(inStream);
} catch(IOException err){
err.printStackTrace();
}
//
return props;
}
public String getDriver() {
return driver;
}
public void setDriver(String driver) {
this.driver = driver;
}
public String getUrl() {
return url;
}
public String getUser() {
return user;
}
public String getPassword() {
return password;
}
}
[/code]
Repare nos comentários
Rafael, tudo bem? Olha eu copie todo seu código e deu esse erro aqui:
java.io.FileNotFoundException: mysqlprops.properties (O sistema não pode encontrar o arquivo especificado)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
at org.willian.jdbc.MysqlProperties.getProperties(MysqlProperties.java:28)
at org.willian.jdbc.MysqlProperties.<init>(MysqlProperties.java:17)
at org.willian.jdbc.Teste.main(Teste.java:7)
Exception in thread "main" java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:418)
at java.util.Properties.load0(Properties.java:337)
at java.util.Properties.load(Properties.java:325)
at org.willian.jdbc.MysqlProperties.getProperties(MysqlProperties.java:35)
at org.willian.jdbc.MysqlProperties.<init>(MysqlProperties.java:17)
at org.willian.jdbc.Teste.main(Teste.java:7)
Java Result: 1
o arquivo esta dentro do pacote org.willian.jdbc junto com a classe MysqlProperties.java
minha classe de teste é essa:
package org.willian.jdbc;
import java.io.IOException;
public class Teste {
public static void main(String[] args) throws IOException {
MysqlProperties obj = new MysqlProperties();
System.out.println("Usuário: " + obj.getUser());
}
}
conseguirrrrrrrrrrrrrrrrrrrrrrrrr… resolvido Rafael:
o erro foi o caminho do arquivo errado. Obrigado cara, valeu mesmo!
Oi,
Você leu os comentários? Falei que deveria usar ou uma ou outra opção para carregar o arquivo. Você deve entender que o arquivo tem que ter visibilidade para a aplicação…aconselho a usar a opção 2:
inStream = new FileInputStream("c:\pasta\mysqlprops.properties");
Coloque seu arquivo na pasta que deseja e informe o caminho completo.
=> Lembre de comentar a linha anterior.
ps. o arquivo estando dentro do pacote que você colocou ele não tem visibilidade para seu programa, ele deveria está no raiz como disse nas primeiras mensagens.
[quote=rafaelglauber]Oi,
Você leu os comentários? Falei que deveria usar ou uma ou outra opção para carregar o arquivo. Você deve entender que o arquivo tem que ter visibilidade para a aplicação…aconselho a usar a opção 2:
inStream = new FileInputStream("c:\pasta\mysqlprops.properties");
Coloque seu arquivo na pasta que deseja e informe o caminho completo.
=> Lembre de comentar a linha anterior.
ps. o arquivo estando dentro do pacote que você colocou ele não tem visibilidade para seu programa, ele deveria está no raiz como disse nas primeiras mensagens.[/quote]
Valeu RafaelGlauber pelas dicas fico muito grato cara.