How to remove row from a txt file using Java?

0

I have a class that I called "database", in this class I can save a note in a txt file to access later. Well the problem is I do not know how to delete some annotation if necessary. I tried to create a new file, then tried to create a ArrayList to save what I do not want to delete so soon after overwriting in the new file. The problem is that I think I did not right. Can anyone help me?

public class BancoDeDadosEmArquivo {

    private File arquivo;

    private static final String NOME_DO_ARQUIVO = "notas.txt";
    private static final String DIVISOR = "¡";

    public BancoDeDadosEmArquivo() {
        arquivo = new File(NOME_DO_ARQUIVO);
        crieOArquivoSeNaoExistir();
    }

    public void salvar(Nota nota) {
        try {
            FileWriter escritor = new FileWriter(arquivo, true);

            String linha = nota.getTitulo() + DIVISOR + nota.getTexto();
            escritor.write(linha + "\n");

            escritor.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public ArrayList<Nota> getNotas() {
    ArrayList<Nota> notas = new ArrayList<>();

        try {
            FileReader leitor = new FileReader(arquivo);
            BufferedReader buffer = new BufferedReader(leitor);

            String linha = buffer.readLine();

            while(linha != null) {
                String[] dados = linha.split(DIVISOR);

                String titulo = dados[0];
                String texto = dados[1];
                notas.add(new Nota(titulo, texto));

                linha = buffer.readLine();
            }

            buffer.close();
        } catch (FileNotFoundException e) {
            System.out.println("Arquivo não encontrado!");
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return notas;
    }

    private void crieOArquivoSeNaoExistir() {
         try {
        arquivo.createNewFile();
        } catch (IOException e) {
        e.printStackTrace();
        }   
    }

    public void excluirAnotacao(String titulo2, String texto2){
        File arquivo = new File("notas.txt");

        try {
            FileReader fr = new FileReader(arquivo);
            BufferedReader br = new BufferedReader (fr); //ler o arquivo 

            FileWriter fw = new FileWriter(arquivo);
            BufferedWriter bw = new BufferedWriter (fw);

            String titulo = br.readLine();
            String texto = br.readLine();
            ArrayList<String> exclusao = new ArrayList();// salva o que eu não quero apagar 

            while((titulo != null) && (texto != null)) {
                if ((titulo.equals(titulo2)) && (texto.equals(texto2)) == false) {
                    exclusao.add(titulo);
                    exclusao.add(texto);
                }
            }


            fw.close();
            br.close();
            FileWriter fw2 = new FileWriter(arquivo, true);
            fw2.close();

            for(int i = 0; i < exclusao.size(); i ++) {
                bw.write (exclusao.get(i) );
                bw.newLine();
            }

            bw.close();
            fw.close();

            } catch (IOException r) {

            }
    }
}
    
asked by anonymous 06.06.2018 / 20:10

0 answers