Evitare di sovrascrivere un file

di il
6 risposte

Evitare di sovrascrivere un file

Salve a voi tutti!
Ho un problema con una parte di codice.
Ho un flusso proveniente da più file che devo scrivere di volta in volta in un unico file.
Questo è stato il mio ultimo tentativo, ogni volta alla fine mi ritrovo un file con scritto solo un rigo che sarebbe l'ultimo inviato.

public void leggiFile(String s) throws FileNotFoundException, IOException{
            BufferedReader br= new BufferedReader(new FileReader(s));
            FileWriter ps = new FileWriter(nomePaziente.getText()+".txt", true);
            String linea = br.readLine();
            while (linea!=null){
                ps.write(linea); 
                ps.flush();
                linea=br.readLine();
            }
            ps.close();
            br.close();
            
            
        }

suggerimenti?

Grazie!

6 Risposte

  • Re: Evitare di sovrascrivere un file

    Ciao HappyMilla, lavoro con c# ma viste le similitudini vado a naso:
    mi puzza l'istruzione: ps.flush(); dentro al ciclo.
    Prova ad eliminarla, tanto dovrebbe addirittura essere richiamata a bassa livello dall'istruzione: ps.close();

    Fammi sapere, ciao
  • Re: Evitare di sovrascrivere un file

    Che ne dici di questo?

    
    public void leggiFile(String s) throws FileNotFoundException, IOException{
    	BufferedReader r = new BufferedReader(new FileReader(s));
    	PrintWriter w = new PrintWriter(new FileOutputStream(nomePaziente.getText()+".txt", true));
    	while((s=r.readLine())!=null)
    		w.write(s+"\n");
    	r.close();
    	w.close();
    }
    
    p.s.
    ho continuato ad usare la variabile s per evitare di dichiarare un'altra String
  • Re: Evitare di sovrascrivere un file

    Ho avuto qualche problema con l'IDE inizialmente neanche questo funzionava, ora funziona! ma mi stampa tutto attaccato...non va a capo =S è illeggibile così.....suggerimenti?

    Supernova ha scritto:



    
    public void leggiFile(String s) throws FileNotFoundException, IOException{
    	BufferedReader r = new BufferedReader(new FileReader(s));
    	PrintWriter w = new PrintWriter(new FileOutputStream(nomePaziente.getText()+".txt", true));
    	while((s=r.readLine())!=null)
    		w.write(s+"\n");
    	r.close();
    	w.close();
    }
    
    p.s.
    ho continuato ad usare la variabile s per evitare di dichiarare un'altra String
  • Re: Evitare di sovrascrivere un file

    HappyMilla ha scritto:


    ho avuto qualche problema con l'IDE inizialmente neanche questo funzionava, ora funziona!
    naturalmente dovevi mettere i vari import.

    HappyMilla ha scritto:


    ma mi stampa tutto attaccato...non va a capo =S è illeggibile così.....suggerimenti?
    a volte i programmi di file editor sono un po' schizzinosi, aggiungi un carriage return, ovvero così:
    
    ...
    w.write(s+"\r\n");
    ...
    
    ora dovrebbe essere ok.
  • Re: Evitare di sovrascrivere un file

    Ciao, prova cosi:

    w.println(s);

    ti stampa la riga e va a capo
  • Re: Evitare di sovrascrivere un file

    Grazie mille a tutti...ho risolto così:
    
    public void leggiFile(String s) throws FileNotFoundException, IOException{
               BufferedReader r = new BufferedReader(new FileReader(s));
                    PrintWriter w = new PrintWriter(new FileOutputStream(nomePaziente.getText()+".txt", true));
                     while((s=r.readLine())!=null){
                       w.write(s);
                       w.println();
                       System.out.println(s);}
                             r.close();
                           w.close();
    
                
                
            }
    
Devi accedere o registrarti per scrivere nel forum
6 risposte