Manipulando Arquivos com Java (abrir, salvar e adicionando)
Ai vai uma classe utilitária para trabalhar com arquivos.
Contém:
- Método para salvar conteúdo, com opção para adicionar no final do arquivo, eu em novo arquivo.
- Método para recuperar o conteúdo de um arquivo para uma variável.
ai vai:
/**
* Funções utilitárias para trabalhar com arquivos
* autor: Gregui Shigunov
* arquivo: UtilsArquivo.java
* 20/09/2007
*/
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/**
* @author Gregui Shigunov
* @since 20/09/2007
*/
public class UtilsArquivo {
/**
* Salva o conteúdo de uma variável em um arquivo
* @param arquivo
* @param conteudo
* @param adicionar se true adicionar no final do arquivo
* @throws IOException
*/
public static void salvar(String arquivo, String conteudo, boolean adicionar)
throws IOException {
FileWriter fw = new FileWriter(arquivo, adicionar);
fw.write(conteudo);
fw.close();
}
/**
* Carrega o conteúdo de um arquivo em uma String, se o aquivo
* não existir, retornará null.
* @param arquivo
* @return conteúdo
* @throws Exception
*/
public static String carregar(String arquivo)
throws FileNotFoundException, IOException {
File file = new File(arquivo);
if (! file.exists()) {
return null;
}
BufferedReader br = new BufferedReader(new FileReader(arquivo));
StringBuffer bufSaida = new StringBuffer();
String linha;
while( (linha = br.readLine()) != null ){
bufSaida.append(linha + “\n”);
}
br.close();
return bufSaida.toString();
}
}
Exemplo de Utilização:
/**
* Exemplo de Utilização
*/
public static void main(String[] args) {
try {
String texto = “Gregui Shigunov \n gregui@gmail.com.br”;
UtilsArquivo.salvar(“arquivo.txt”, texto, false);
texto = UtilsArquivo.carregar(“arquivo.txt”);
System.out.println(texto);
} catch (Exception e) {
e.printStackTrace();
}
}

em 20 20UTC Outubro 20UTC 2007 em 9:26 pm
Testei sua classe e o resultado foi o seguinte:
Alexandre Ferreira
http://alexandreferreira.com.br/Alexandre Ferreira
http://alexandreferreira.com.br/Alexandre Ferreira
http://alexandreferreira.com.br/
Fiz uma pequena mudança no método salvar, veja o resultado e a mudança respectivamente:
Alexandre Ferreira
http://alexandreferreira.com.br/
Alexandre Ferreira
http://alexandreferreira.com.br/
Alexandre Ferreira
http://alexandreferreira.com.br/
public static void salvar(String arquivo, String conteudo, boolean adicionar) throws IOException {
FileWriter fw = new FileWriter(arquivo, adicionar);
if (!conteudo.endsWith(“\n”)) {
conteudo = conteudo + “\n”;
}
fw.write(conteudo);
fw.close();
}
em 22 22UTC Outubro 22UTC 2007 em 8:45 am
Mas não se pode mudar o conteúdo daquilo que se quer salvar! No seu caso você está usando o APPEND (adicionando no final, correto?). Para o seu caso, foi uma boa. Mas imagine que vc precise criar um arquivo que concatene resultados (separados por vírgula, por exemplo), ai a função se torna imprestável! Se o objetivo é ter quebra de linha, ela deve vir antes dessa função. Pois o objetivo dessa função, é salvar em Arquivos, apenas salvar.
Mas valeu o comentário
em 24 24UTC Outubro 24UTC 2007 em 2:38 pm
Gregui, sou meio leigo no assunto… mas gostaria de saber se é possível fazer umas modificações no código e fazer ele salvar Objetos criados por mim… entende? em vez de serem parametros do tipo String, fazer salvar um objeto qualquer…
“public static void salvar(String arquivo, String conteudo, boolean adicionar)” em vez deste paramentros nesta função, fazer assim:
“public static void salvar(String arquivo, ClasseDados conteudo, boolean adicionar)”, sendo que a Classe dados, pode ser algo como:
public class ClasseDados{
String Nome;
int Idade;
String Endereco;
double Peso;
public ClasseDados(){
Nome = “”;
Idade = 0;
Endereco = “”;
Peso = 0;
}
….
(Outros construtores e os metodos que serão utilizados)
….
}
Deu para entender? Não é algo realmente complicado de alterar, muito pelo contrário, dará maior padronização no arquivo… Abraçosss
public ClasseDados(){
em 1 01UTC Novembro 01UTC 2007 em 9:31 pm
Ola tudo bem….
estou começando agora a aprender java
estou fazendo um programinha que guardar o saldo cliente, o n da conta, o nome….
como faco para guardar as informacoies em arquivo e depois recupera-las
se puder me ajudar agradeço muito…..
como vou determinar o caminho do diretorio onde vai salvar o arquivo
obrigado
em 19 19UTC Fevereiro 19UTC 2008 em 6:17 pm
bacana…
tua explication…
muito claro, melhor que isso so mudar de curso…
flws
em 26 26UTC Maio 26UTC 2008 em 4:41 pm
em 30 30UTC Setembro 30UTC 2008 em 12:51 am
OBRIGADO !!
em 5 05UTC Outubro 05UTC 2008 em 9:09 am
Esqueci minha senha do Gmail e não consigo entrar,devo estar com um volume de mensagens imensom,soliccito ajuda para resolver o poblema.
em 26 26UTC Abril 26UTC 2009 em 7:01 pm
óla pessoal estou aprendendo java agora e gostaria de tirar algumas dúvidas se alguém puder me ajudar segue o seguinte problema: eu tenho que montar um programa em java que vai ler o arquivo no disco txt. e depois carregar a string criptografada numa chave variável e gravar de volta……
em 22 22UTC Junho 22UTC 2009 em 11:28 am
Galera preciso de ajuda urgente!!!
Procurei em toda web e não consegui nada que me ajudasse.
Preciso ler informações de modelagem de banco de dados antiga pelo java.
por exemplo em delphi eu tenho:
type
// Declaração da Estrutura
TPessoa = record
Nome: String[20];
Email: String[20];
end;
dai no delphi eu faço a associação deste arquivo de estrutura e na hora de fazer a leitura.
exemplo no delphi:
arq: file of Tpessoa
reg:Tpessoa
assingfile(arq,c:\dados.dat);
reset (arq)
read(arq,reg)
(…)
Como faço para realizar a leitura disso em Java?
em 26 26UTC Setembro 26UTC 2009 em 12:54 am
Olá, funcionou corretamente para a minha necessidade, muito obrigado!!!
só que quando abro o arquivo no bloco de notas ele não está com as quebras de linhas corretas, só funciona no eclipse as quebras (\n). existe algum outro jeito de fazer quebras de linhas além do \n, para que seja reconhecido como nova linha no bloco de notas por exemplo? no delphi seria o código #13 do enter se não me falha a memória, tem algo parecido pro java?
Obrigado novamente.
em 26 26UTC Setembro 26UTC 2009 em 7:55 pm
experimenta utilizar o \r\n
em 30 30UTC Setembro 30UTC 2009 em 1:06 am
Olá, funcionou o \r\n para o bloco de notas!
mais uma vez muito obrigado!