Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [Java] Problema con il flusso di scrittura di un file di testo

    Spero questa volta di aver scritto correttamente il titolo


    tra il tanto codice....
    ho un istante in cui vengono passati al sistema dei file di testo, e praticamente a me serve che vengono (secondo alcuni criteri) stampati su un unico file.

    Se faccio la stampa a video, vedo che il flusso c'è ma poi nel file mi ritrovo una sola riga, quindi penso mi sovrascrivi tutto sempre e solo su una riga .....

    ..... ma dove sbaglio? cosa secondo voi devo modificare?

    ecco il codice:

    codice:
    public void leggiFile(String s) throws FileNotFoundException, IOException{
                BufferedReader br= new BufferedReader(new FileReader(s));
                String linea = br.readLine();
                while (linea!=null){
                    scriviSulFile(linea);
                    linea=br.readLine();
                }
            }
    
            public void scriviSulFile(String linea) throws FileNotFoundException{
                PrintStream ps = new PrintStream(nomePaziente.getText()+".txt");
                    ps.println(linea);
                    System.out.println(linea);
    Grazie

  2. #2
    nessuno lo sa?

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157

    Re: [Java] Problema con il flusso di scrittura di un file di testo

    Originariamente inviato da HappyMilla
    codice:
    public void leggiFile(String s) throws FileNotFoundException, IOException{
                BufferedReader br= new BufferedReader(new FileReader(s));
                String linea = br.readLine();
                while (linea!=null){
                    scriviSulFile(linea);
                    linea=br.readLine();
                }
            }
    
            public void scriviSulFile(String linea) throws FileNotFoundException{
                PrintStream ps = new PrintStream(nomePaziente.getText()+".txt");
                    ps.println(linea);
                    System.out.println(linea);
    fammi capire, ti serve un file per ogni nome paziente? tu ogni volta che leggi il file di partenza apri un file con il nome paziente (che non so da dove prendi suppongo lo valorizzi in qualche modo) scrivi la linea e butti l'oggetto (nemmeno lo chiudi e questo è un errore).
    Rivedi bene la logica, se il file è unico devi aprirlo fuori, o comunque aprirlo in append, stai attenta

  4. #4
    Non so come fare perché praticamente nella sessione, ci sarà un solo "nome paziente"

    faccio prima a spiegare cosa sto facendo

    è un'applicazione dove l'operatore inserisce in un Jtextfild il nome paziente e sceglie una serie di blocchi. all'avvio, si susseguono questi blocchi, ogni blocco genera un file di log (txt), finita la carrelata, un metodo ordina tutti i file di testo e poi richiama questi due metodi per leggere i singoli file e scriveli in un unico file complessivo.

    Usando quel System.out noto che il tutto funziona, ma mi sovrascrive sempre sullo stesso rigo.....

    Non riesco a capire come potrei richiamarlo fuori....praticamente nel metodo dovrei solo fargli scrivere la "linea" ?

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    1. è altamente inefficiente aprire un file ad ogni scrittura, lo devi aprire fuori
    2. devi provvedere a chiudere lo stream
    3. devi aprire il file in append. Guarda le api su printstream, se non dici niente il file lo apri in scrittura, ma se c'era roba cancelli il contenuto. TU devi aprirlo in append (non cancellare quello che c'era)

    Non cambia quello che devi fare, la logica prescinde dalla tua applicazione

  6. #6
    ho letto....ho fatto diversi tentativi, questo è stato l'ultimo......ma ho sempre lo stesso risultato

    codice:
    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){
                    scriviSulFile(linea);
                    linea=br.readLine();
                }
            }
    
            public void scriviSulFile(String linea) throws FileNotFoundException, IOException{
                FileOutputStream fos=new FileOutputStream(nomePaziente.getText()+".txt",true);
                PrintStream ps=new PrintStream(fos);
                ps.println(linea); 
    
            }

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    certo perché scrivi file mica lo hai cambiato!!!
    allora non passare per scrivi file, prova cosi


    codice:
    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.println(linea); 
                    ps.flush();
                    linea=br.readLine();
                }
                ps.close();
                br.close();
                
            }

  8. #8
    ma al posto di ps.println(linea); metto ps.write(linea); vero?

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    penso di si, qualcosa che ti faccia scrivere una stirnga...l'API a memoria non la ricordo, ma il principio è quello

  10. #10
    niente da fare neanche cosi funziona :S

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.