Scrivere in una specifica riga file txt Java

di Anonimizzato27405 il
4 risposte
Sto cercando di scrivere in una riga specifica del mio file txt (quella riga esiste già). per esempio, voglio scrivere "ciao" nella riga numero 4. Ho provato un sacco di tutorial, ma niente da fare.. qualcuno può aiutarmi? Per favore?

4 Risposte

  • tiziano faverzani ha scritto:


    Sto cercando di scrivere in una riga specifica del mio file txt (quella riga esiste già). per esempio, voglio scrivere "ciao" nella riga numero 4. Ho provato un sacco di tutorial, ma niente da fare.. qualcuno può aiutarmi? Per favore?
    Non si può banalmente modificare una riga "in mezzo" al file per il semplice motivo che il contenuto successivo NON si può spostare fisicamente avanti o indietro. E vale in generale (qualunque linguaggio/S.O.).

    Va riscritto il file per intero e ci sono almeno 2 approcci:
    a) si leggono tutte le righe per averle in memoria, si modifica la riga in memoria e si riscrive tutto su file.
    b) si legge riga x riga e "al volo" si scrive su un altro file la riga originale o modificata.
  • Ok, proverò l'approccio a, poi pubblicherò il codice se funziona.
  • Sono riuscito a caricare un array con ogni linea, e a modificare la posizione nell'array che mi serve, solo che non riesco a scrivere ogni riga per riga quello che c'è nell'array, bisogna fare con un while? potresti farmi un esempio? perfavore?
  • tiziano faverzani ha scritto:


    Sono riuscito a caricare un array con ogni linea
    Sarebbe meglio una lista (List/ArrayList) perché non sai a priori quante righe ci sono.

    tiziano faverzani ha scritto:


    non riesco a scrivere ogni riga per riga quello che c'è nell'array
    È sufficiente un PrintWriter (eventualmente incapsulato in BufferedWriter per efficienza) e poi un for (anche il for-each, Java 5+).

    P.S. assicurati di fare sempre i close() in modo corretto/consistente. Questo richiede l'uso del try-finally o del try-with-resource (Java 7+).
Devi accedere o registrarti per scrivere nel forum
4 risposte