11 de fev. de 2014

Como excluir uma linha de um arquivo de texto em Java

O Java oferece diversas classes para manipulação de arquivos. Mas não encontramos algum método que tenha a função de excluir determinada linha, devido a esse fato ensinaremos, nesse tutorial, como excluir uma determinada linha que contém um texto.


Dependendo do caso em que você queira excluir uma linha, seu código terá problemas, pois se, por exemplo, você desejar excluir a linha com o nome "João", se alguma outra linha conter esse nome, ocorrerá um erro e ambas serão excluídas. A solução para isso é você criar um id para cada linha, assim se você quiser excluir a linha do cadastro "joão", excluirá pelo seu id, assim "id=01".

Primeiramente deve-se criar um ArrayList para salvar as linhas que não serão excluídas. Após isso um while deverá ser usado para procurar a linha que será excluída, enquanto a linha for lida e nela não conter o conteúdo da linha que se quer remover, ela é salva no ArrayList, ao final limpa-se o arquivo e transfere-se o arquivo do ArrayList para o arquivo.



ArrayList<String> guardarLinhas = new ArrayList<String>();

        String linha = "";
        String palavra = "linha excluida"

        try {
            BufferedReader in = new BufferedReader(new FileReader("arquivo.txt"));

            FileWriter fw = new FileWriter("dados/arquivo.dat", true);
            BufferedWriter bw = new BufferedWriter(fw);
          

         while ((linha = in.readLine()) != null) {

                if (linha.contains(
palavra)) {      //se na linha não conter a palavra, ela é salva
                } else {
                   
guardarLinhas .add(linha);
 
                }
            }
            fw.close();
            bw.close();
            in.close();
            File file = new File("arquivo.txt");  //limpa os dados do arquivo
            file.delete();

            File file2 = new File("arquivo.txt");  //cria um novo arquivo
            file2.createNewFile();
            FileWriter fw2 = new FileWriter("dados/arquivo.dat", true);
            BufferedWriter bw2 = new BufferedWriter(fw2);

            for (int i = 0; i < guardarCadastros.size(); i++) {   //transfere o ArrayList para o arquivo
                bw2.write(guardarCadastros.get(i));
                bw2.newLine();

            }
            bw2.close();
            fw2.close();

        } catch (IOException e) {
        }


 Outro Exemplo:

   public static void main(String[] args) {
    File fil = new File("arquivo.txt");
   
    try{
    FileReader fr = new FileReader(fil);
    BufferedReader br = new BufferedReader(fr);
   
  
  
    String linha = br.readLine();
    ArrayList<String> salvar = new ArrayList();
   
    while(linha != null){
       
        if(linha.equals("linha3") == false){
            salvar.add(linha);
        }
       
        linha = br.readLine();
    }
   
   
    br.close();
    fr.close();
    FileWriter fw2 = new FileWriter(fil, true);
    fw2.close();
   
   
    FileWriter fw = new FileWriter(fil);
    BufferedWriter bw = new BufferedWriter(fw);
   
    for(int i = 0; i<salvar.size(); i++){
        bw.write( salvar.get(i) );
        bw.newLine();
    }
    bw.close();
    fw.close();
   
    }catch(IOException ex){
       
    }
    }

Nenhum comentário:

Postar um comentário