Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    115

    leggere e scrivere file .txt

    Salve ragazzi vorrei un consiglio:

    sto cercando di implementare un pezzo di code che ha il compito di leggere e scrivere delle informazioni su file .txt. Il codice ha la seguente logica:

    Se il file .txt non è stato gia creato ( quindi non si trova nella directory) allora ne creo uno nuovo e ci inserisco dei dati.

    Se il file .txt esiste gia allora non deve modificare i dati che gia ci sono ma deve aggiungerne altri.

    Vorrei un consiglio su questo ultimo punto. Ho scritto già del codice che posto qui sotto. Io avrei in mente di copiare (leggere) quello che gia c'e nel file ( se non esiste gia) e aggiungere i nuovi dati...che ne dite.???? ammesso che vada bene come soluzione come potrei farla nei migliori dei modi??? thx

    codice:
    import java.io.*;
    import java.util.*;
    
    public class DataFileTest {
    
        public static void main(String[] args) throws IOException {
            String[] staff = new String[1];
            
    
            try {
                BufferedReader in = new BufferedReader(new FileReader("prova.txt"));
                String[] newStaff = readData(in);
                System.out.println(newStaff[0]);
                
                
    
                in.close();
            } catch (FileNotFoundException ex) {
                try {
    
                    PrintWriter out = new PrintWriter(new FileWriter("prova.txt"));
                    writeData(staff, out);
                    out.close();
    
                } catch (IOException exception) {
                    exception.printStackTrace();
                }
            }
        }
    
     
       static void writeData(String[] e, PrintWriter out) throws IOException
       {
          // write number of employees
          out.println(e.length);
    
          for (int i = 0; i < e.length; i++)
            out.println("var1"+"|"+"var2"+"|"+"var4");
       }
       
       static String[] readData(BufferedReader in) throws IOException
       {
          // retrieve the array size
          int n = Integer.parseInt(in.readLine());
    
          String[] e = new String[n];
          for (int i = 0; i < n; i++)
          {
             e[i] = new String();
             String s = in.readLine();
             StringTokenizer t = new StringTokenizer(s, "|");
             String name1 = t.nextToken();
             String name2 = t.nextToken();
             String name3 = t.nextToken();
             e[i]=s;
             
          }
          return e;
       }
       
       
       
          
       
       private String name;
       private double salary;
       private Date hireDay;
    
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Nel caso il file esista, se devi scrivere solo in coda puoi aprire il file in modalità "append", FileWriter ha un costruttore apposito, quello dove il secondo parametro è un valore booleano, leggi la documentazione: http://docs.oracle.com/javase/7/docs...le,%20boolean).

    Almeno ti eviti una lettura inutile.

    Counque il codice che hai postato non mi sembra corrisponda alla tua descrizione del problema: nel caso il file esistesse già, non ci scrive nulla sopra, legge soltanto.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    115
    Counque il codice che hai postato non mi sembra corrisponda alla tua descrizione del problema: nel caso il file esistesse già, non ci scrive nulla sopra, legge soltanto.
    volevo aspettare un suggerimento prima di scrivere codice inutile

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    115
    quindi tu dici senza utilizzare la classe BufferedReader???

    perche in effetti io devo solo aggiungere dati..ovviamente se non c'e i file lo devo creare!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    115
    ok risolto

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    No se ti serve puoi usare lo stesso la classe BufferedReader, non cambia nulla, basta passargli un FileReader creato in quella modalità:

    codice:
    BufferedReader bufferedReader = new BufferedReader(
         new FileReader("nomeFile.estensione", true));

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da Kaamos
    No se ti serve puoi usare lo stesso la classe BufferedReader, non cambia nulla, basta passargli un FileReader creato in quella modalità:

    codice:
    BufferedReader bufferedReader = new BufferedReader(
         new FileReader("nomeFile.estensione", true));
    Ehm... no. Non esistono costruttori per i Reader che abbiano un secondo parametro di quel tipo... non avrebbe senso. Il parametro boolean (per l'append) esiste, chiaramente, solo per i Writer/OutputStream.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Originariamente inviato da LeleFT
    Ehm... no. Non esistono costruttori per i Reader che abbiano un secondo parametro di quel tipo... non avrebbe senso. Il parametro boolean (per l'append) esiste, chiaramente, solo per i Writer/OutputStream.


    Ciao.
    ovviamente ho sbagliato.e.parlavo dei writer, anche perche deve aggiungere dei dati, grazie della correzione.

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.