Scrivere in una specifica riga file txt Java

di il
4 risposte

Scrivere in una specifica riga file txt Java

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

  • Re: Scrivere in una specifica riga file txt Java

    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.
  • Re: Scrivere in una specifica riga file txt Java

    Ok, proverò l'approccio a, poi pubblicherò il codice se funziona.
  • Re: Scrivere in una specifica riga file txt Java

    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?
  • Re: Scrivere in una specifica riga file txt Java

    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