Estou desenvolvendo uma classe que realiza a comunicação com o banco de dados, e gostaria de pegar as informações de conexão de um arquivo, porém não estou conseguindo abrir o arquivo e pesquisando no google e até mesmo aqui no forum não encontrei algo que pudesse estar errado... segue o código:
Para ler arquivos, utilize a classe Scanner, ela é mais simples.
Além disso, vc usa o Eclipse ou o Netbeans? Cada um procura o arquivo em um diretório padrão diferente. Para não ter dúvidas, coloca o caminho completo do arquivo lá em new FIle.
ok?
M
MaxVenom
Eu uso o Eclipse…
Mas eu não gostaria de usar o caminho completo na aplicação, pois so Deus sabe onde essa aplicação vai estar… E acabei de testar e continua dando o mesmo erro…
Existe algum método no Java que eu consigo pegar o diretório atual da aplicação? Eu programo em .Net e lá tem um esquema tipo Directory.GetCurrentDirectory(); que me retorna o diretório atual.
O arquivo precisa ficar na sua workspace no eclipse.
T
thingol
Tente não se amarrar a isso (identificar o diretório corrente da aplicação).
Em vez disso, o modo correto de você abrir um arquivo que está junto com sua aplicação (mas dentro do seu jar, por exemplo) é pô-lo em algum lugar do seu classpath, e usar getClass().getResourceAsStream() - há varios exemplos aqui no GUJ.
tralsl
MaxVenom:
Eu uso o Eclipse...
Mas eu não gostaria de usar o caminho completo na aplicação, pois so Deus sabe onde essa aplicação vai estar... E acabei de testar e continua dando o mesmo erro...
Existe algum método no Java que eu consigo pegar o diretório atual da aplicação? Eu programo em .Net e lá tem um esquema tipo Directory.GetCurrentDirectory(); que me retorna o diretório atual.
Existe isso em Java?
pra vc pegar o nome do diretório vc pode fazer isso:
Agora pelo menos ele consegue encontrar o arquivo (arquivo.exists() = true) mas naum consigui ler…
To tentando ler, assim q conseguir eu posto a solução.
Se alguem ja souber e quizer colar ae… eu agradeço!
M
MaxVenom
Algo estranho para mim um mero iniciante nesta vasta linguagem chamada Java…
Ele ta zerando o arquivo…
Exemplo, o arquivo tem conteudo… eu inicio o programa e apaga todo o conteudo do arquivo!
E
entanglement
Tio, se você puder mudar o formato (só um pouquinho) para o formato Properties, vai ver que é muito simples. Basta usar o método load da classe java.util.Properties, não é difícil achar exemplos na Internet.
(Evite reinventar a roda se possível).
O único problema do formato Properties é que o caracter “” deve ser duplicado. (Isso quebrou as pernas de um colega meu).
Por exemplo, se você tinha configurado algo como:
Algo estranho para mim um mero iniciante nesta vasta linguagem chamada Java…
Ele ta zerando o arquivo…
Exemplo, o arquivo tem conteudo… eu inicio o programa e apaga todo o conteudo do arquivo!
Se você criar um FileWriter sobre um arquivo, ele costuma zerar o arquivo, já que é para você gravar nele, não?
Para atualizar um arquivo texto, não se pode ao mesmo tempo criar um FileWriter e um FileReader para o mesmo arquivo. Você vai ter problemas, como você mesmo constatou. O correto, se é realmente isso que você quer fazer, é ler o arquivo inteiro em memória primeiro, fazer as modificações, e então gravar o arquivo inteiro. Lembre-se que mesmo em C++ não é possível atualizar um arquivo-texto abrindo-o para leitura e escrita ao mesmo tempo.
M
MaxVenom
Vlwwwwwwwwww galera!!! Agora o esquema ta funfundo 100% 8)
Realmente, depois que removi o writer (até mesmo por que nao ia usar) os dados continuaram sendo mantidos no arquivo.
Aos que tiverem a mesma dúvida, segue o código que passei a usar:
publicstaticvoidCriaArquivo(Stringarquivo,Stringconteudo){try{FileWriterwriter=newFileWriter(arquivo);PrintWritersaida=newPrintWriter(writer);saida.println(conteudo);//Aqui eh oque ira escrever saida.close();writer.close();}catch(FileNotFoundExceptione){JOptionPane.showMessageDialog(null,"Arquivo de configurações não foi encontrado. Favor entrar em contato com o administrador do sistema.","Arquivo não encontrado",JOptionPane.ERROR_MESSAGE);}catch(IOExceptione){e.printStackTrace();}
Ahh quando postei vc ja tinha postado a solucao demorei muito