Bom dia galera do fórum, estou precisando de uma mãozinha de vcs, preciso carregar um objeto do tipo Conexão com informação de uma arquivo txt, mas infelizmente não estou conseguindo fazer esse processo, abaixo vou posta a estrutura do arquivo txt e o método que estou tentando utiliza.
===========================================
conexao.........: LAVADOR
Driver..........: org.firebirdsql.jdbc.FBDriver
Lib.............: jdbc:firebirdsql
Caminho.........: C:/Lavador/bd/
End.IP/Servidor.: localhost
Porta...........: 3054
Banco...........: master
Usuário.........: SYSDBA
Senha...........: [C@182f726
===========================================
===========================================
conexao.: TRANSPORTADORA
Driver..........: org.firebirdsql.jdbc.FBDriver
Lib.............: jdbc:firebirdsql
Caminho.........: C:/Lavador/bd/
End.IP/Servidor.: localhost
Porta...........: 3054
Banco...........: AP
Usuário.........: SYSDBA
Senha..: [C@1f66c65
===========================================
===========================================
conexao.........: ADI
Driver..........: rere
Lib.............: erer1
Caminho.........: wewe
End.IP/Servidor.: 192.168.1.99
Porta...........: 3054
Banco...........: sibb
Usuário.........: SYSDBA
Senha...........: [C@9b8f86
===========================================
O método para ler o arquivo e preencher
[code]
//Este é o método que estou tentando usar mas não esta dando certo tenho que quebrar a String pelo o espaço.
public List obterConexao() throws Exception
{
List listaCon = new ArrayList<>();
Conexao con = null;
String arquivo = “/C:/Users/C01/Documents/NetBeansProjects/Arquivo/config_conexao.txt”;
Scanner scan = new Scanner(new File(arquivo));
while (scan.hasNext())
{
String linha = scan.nextLine();
String[] arrayLinha = linha.split(" ");
con = new Conexao();
con.setNomeConexao(arrayLinha[0]);
con.setDriver(arrayLinha[1]);
con.setLib(arrayLinha[2]);
con.setCaminho(arrayLinha[3]);
con.setPorta(arrayLinha[4]);
con.setHost(arrayLinha[5]);
con.setNomeBanco(arrayLinha[6]);
con.setSenhaBanco(arrayLinha[7]);
listaCon.add(con);
}
return listaCon;
} [/code]
alguém ai pode me ajuda a solucionar esse o carregamento desse objeto.
O que está dando errado, amigão?
Se a estrutura do arquivo esta exatamente assim o problema é o nextLine que lê apenas 1 linha de cada vez e não um bloco.
terá que armazenar as 9 linhas de um bloco e depois separa-las ou identificar linha a linha.
if(linha != null){
if(linha.startsWith("conexao")){
String[] arrayLinha = linha.split(" ");
con.setNomeConexao(arrayLinha[1]);
}else if(linha.startsWith("Driver")){
String[] arrayLinha = linha.split(" ");
con.setDriver(arrayLinha[1]);
}
}
Tá aí uma maneira de pegar apenas os valores:[code]public class Teste{
public static void main(String[] args) throws Exception{
String text = toString(new File("caminhoDoSeuArquivo.txt"));
Pattern p = Pattern.compile("=+(.+?)=+", Pattern.DOTALL);
Matcher m = p.matcher(text);
while (m.find()){
String match = m.group(1).trim();
String[] parts = match.split("\\s+");
for (int i = 1; i < parts.length; i += 2){
System.out.println(parts[i]);
}
System.out.println();
}
}
public static String toString(File f) throws IOException{
StringBuilder builder = new StringBuilder();
String linha = null;
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(f), "UTF-8"));
while ((linha = in.readLine()) != null){
builder.append(linha);
}
in.close();
return builder.toString();
}
}[/code]Agora um detalhe, você está armazenando a senha de maneira errada. Você está imprimindo direto o array, que te dá uma linha como [C@182f726 e isso não é o array de chars que você quer, é a representação dele em String
se for possivel, use um properties no lugar de txt, fica muito mais facil para trabalhar
conexao= LAVADOR
Driver= org.firebirdsql.jdbc.FBDriver
Lib= jdbc:firebirdsql
Caminho= C:/Lavador/bd/
End.IP/Servidor=localhost
quero agradeçer a todos pela colaboração.
Lins_jr já usei o properties para seta uma variavel mas como ficaria a estrutura para carregar o List do objeto.
Vc poderia definir as chaves com um nome especifico, por exemplo
LAVADOR.Driver=org.firebirdsql.jdbc.FBDriver
LAVADOR.Lib=jdbc:firebirdsql
LAVADOR.Caminho=C:/Lavador/bd/
LAVADOR.End.IP/Servidor=localhost
LAVADOR.Porta=3054
LAVADOR.Banco=master
LAVADOR.Usuário=SYSDBA
LAVADOR.Senha=[C@182f726
===========================================
===========================================
TRANSPORTADORA.Driver=org.firebirdsql.jdbc.FBDriver
TRANSPORTADORA.Lib=jdbc:firebirdsql
TRANSPORTADORA.Caminho=C:/Lavador/bd/
TRANSPORTADORA.End.IP/Servidor=localhost
TRANSPORTADORA.Porta=3054
TRANSPORTADORA.Banco=AP
TRANSPORTADORA.Usuário=SYSDBA
TRANSPORTADORA.Senha=[C@1f66c65
Lins_jr, é como eu te falei eu já usei um Properties para seta apenas uma conexao como ficaria o metodo oberteConexao para carregar todas as conexoes cadastrada no txt
a minha finalidade é carregar o jcombobox só com os nomes das conexoes, e apos escolhe uma conexao seta os demais dados nos campos jtexfield
esse era o codigo q eu usar para seta apenas uma conexao
public static void lerArquivo() {
try {
File file = new File("Lavador.txt");
Properties prop = new Properties();
prop.load(new FileInputStream(file));
driver = prop.getProperty("driver");
url = prop.getProperty("url");
user = prop.getProperty("user");
senha = prop.getProperty("senha");
foto = prop.getProperty("foto");
} catch (IOException erro) {
Logger.getLogger(ConnectionFactory.class.getName()).log(Level.SEVERE, null, erro);
JOptionPane.showMessageDialog(null,"Nao foi possivel cria Conexao com o Banco de Dados! "+erro);
}
}
abaixo esta o link da tela q deseja implementa.
http://img199.imageshack.us/img199/9398/loginl.gif
Rodrigo Sasaki, assim eu sou meio leigo nesse mundo por isso acabo comentendo esse erros, como eu devou salvar corretamente a senha
Descontando o fato que você não deveria salvar a senha “do jeito que ela foi digitada”, e sim criptografada de algum modo, o jeito de você converter um array de char para uma string é com o construtor de String que recebe um char[]:
http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#String(char[])
Exemplo:
String senha = new String (passwordField.getPassword());
entanglement , valeu meu jovem vou esta salvando dessa maneira agora vou usar md5 para criptografa a senha.