Sobrescrever arquivo txt

4 respostas
V

OLa!

Fiz um methodo para reescrever um arquivo txt, mas gostaria que as informaçoes fossem regravadas e nao adicionadas.

Arquivo antes:
C:\Users\Veronica\Desktop\saudade\uva.jpg<>AMOR<>
C:\Users\Veronica\Desktop\saudade\abraco2.jpg<>BANANA<>
C:\Users\Veronica\Desktop\saudade\saudade.jpg<>UVA<>
C:\Users\Veronica\Desktop\saudade\abraco.jpg<>BANANA<>

Arquivo depois:
C:\Users\Veronica\Desktop\saudade\uva.jpg<>AMOR<>
C:\Users\Veronica\Desktop\saudade\saudade.jpg<>UVA<>
C:\Users\Veronica\Desktop\saudade\abraco.jpg<>BANANA<>

Mas a resposta que tenho eh esta:
C:\Users\Veronica\Desktop\saudade\uva.jpg<>AMOR<>
C:\Users\Veronica\Desktop\saudade\abraco2.jpg<>BANANA<>
C:\Users\Veronica\Desktop\saudade\saudade.jpg<>UVA<>
C:\Users\Veronica\Desktop\saudade\abraco.jpg<>BANANA<>

C:\Users\Veronica\Desktop\saudade\uva.jpg<>AMOR<>
C:\Users\Veronica\Desktop\saudade\saudade.jpg<>UVA<>
C:\Users\Veronica\Desktop\saudade\abraco.jpg<>BANANA<>

Ja coloquei um FALSE no parametro do FileWrite, mas ai o arquivo vem VAZIO.

Onde estou errando???

public void rename(String novoNome) throws IOException {
        arquivo = new File(adresse);

        //File dir = new File(adresse);
        jTextField3.setText(novoNome);

        novoNome = jTextField3.getText().toLowerCase();

        String[] sp = arquivo.getName().split("\\.");
//FileReader fr = new FileReader("/Users/Veronica/workspacenetbeans/Visionneuse/mots.txt");  
        fr = new FileReader("/Users/Veronica/workspacenetbeans/Visionneuse/mots.txt");
//FileWriter gravar = new FileWriter(new File("/Users/Veronica/workspacenetbeans/Visionneuse/mots.txt"),true);
//BufferedWriter gravar = new BufferedWriter(new FileWriter("/Users/Veronica/workspacenetbeans/Visionneuse/mots.txt", true)); 
        gravar = new BufferedWriter(new FileWriter("/Users/Veronica/workspacenetbeans/Visionneuse/mots.txt", true));
//BufferedReader br = new BufferedReader(fr);   
        br = new BufferedReader(fr);
        String temp;
        List<String> lista2 = new ArrayList<String>();
        while ((temp = br.readLine()) != null) {
            //Aqui gera a sua "lista". No caso, imprimi cada linha na tela.     
            System.out.println("linhaa TEMP=" + temp);
            if (!temp.contains(jTextField2.getText())) {

                lista2.add(temp);
                System.out.println("*** NAO ALTERADO ***");
            }
        }
        String qqqq = lista2.toString();
        System.out.println("***LISTA = " + qqqq);

        gravar.write(qqqq.replace(",", "\n").replace(" ", "").replace("[", "").replace("]", ""));

        /*Duplicite l = new Duplicite("/Users/Veronica/workspacenetbeans/Visionneuse/mots.txt");
         l.lerTexto();
         System.out.println("CONCLUIDO...");*/

        gravar.close();

        if (!jTextField3.getText().isEmpty()) {
            if (arquivo.isFile() == true) {
                arquivo.renameTo(new File(arquivo.getParent() + "\\" + novoNome + "." + sp[1]));
                String nouveau1 = arquivo.getParent() + "\\" + novoNome + "." + sp[1].toString();
                jTextField2.setText(nouveau1);
                //jTextField2.setText(dir.getAbsolutePath());

            } else {
                arquivo.renameTo(new File(arquivo.getParent() + "\\" + novoNome));
            }
        } else {
            jLabel5.setText("Informar Novo Nome");
        }
        setChanged();
        notifyObservers();
    }

OBRIGADA!!!

4 Respostas

Ironlynx
gravar = new BufferedWriter(new FileWriter("/Users/Veronica/workspacenetbeans/Visionneuse/mots.txt", true));

Só mudar o parâmetro do append de true para false.

V

Alguém pode me ajudar???

Obrigada!
veronica

V

Boa tarde!
Alguém pode me ajudar…?

Creio que nao seja um problema tao dificil de resolver.
Obrigada

Ironlynx

veronicaveronica,
você não tá criando o arquivo em algum outro lugar?
Antes de fechar:

gravar.close();

Dê um flush para liberar a escrita no arquivo:

gravar.flush();

E tire esses true, pois se vc vai sobrescrever, o append tem que ser desabilitado.E tudo que você abre, vc tem que fechar, isso serve para o leitor também(dê um br.close()).

Criado 15 de fevereiro de 2013
Ultima resposta 15 de fev. de 2013
Respostas 4
Participantes 2