|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
[JAVA] Scrivere su un file
Ciao.
Ho un file di testo .txt dal quale devo leggere una linea, farci le opportune modifiche e poi sostituire la linea modificata nel file. Ecco quest'ultimo passaggio non ho proprio idea di come si possa fare. Come si fa a sostituire una riga in un file? ![]() Grazie. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2774
|
Se devi sostituire una riga nel senso che devi sostituire una particolare frase con un'altra puoi usare la funzione replace degli oggetti String, se invece ti interessa la riga numero n devi aprire un nuovo file in scrittura, leggere le righe e ricopiarle uguali nel nuovo file una alla volta fino ad arrivare alla riga n, poi scrivi quello che devi scrivere al posto di quella riga e poi riprendi a copiare le righe fino alla fine del file. Quando hai finito cancelli il vecchio file e rinomini il nuovo.
Naturalmente ci sono anche altri modi ma penso che questo per te vada bene.. |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Farlo sullo stesso file da cui stai leggendo non è fattibile.
O leggi tutte le righe, le tieni in memoria, fai le modifiche e poi riscrivi tutto. Oppure leggi una riga per volta, la modifichi e la scrivi ma su un nuovo file.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Io ho un file fatto in questo modo:
Codice:
Il cavaliere oscuro 14.00 50 16.00 50 18.00 50 20.00 50 22.00 50 American Gangster 14.00 70 16.30 70 19.00 70 21.30 70 23.00 70 .....continua Codice:
Il cavaliere oscuro 14.00 50 25-13-82-24-78 16.00 50 16-18-27-38 18.00 50 ...e così via 20.00 50 22.00 50 Edit: sorry andbin non avevo ancora letto la tua risposta. |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Allora mi rassegnerò a rigenerare un nuovo file. L'importante era saperlo
![]() Grazie. |
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Jan 2008
Città: roma
Messaggi: 296
|
potresti usare RandomAccessFile
ma nn so fino a che punto puo andare bene con un semplice file di testo , cmq quella classe funziona + o - cosi ... tu setti un indice nel file e poi ci scrivi ... se devi leggere ogni riga basta che fai 'readline' poi ti prendi l'indice con 'getFilePointer()' ma ti avverto ... e una cosa un po contorta xchè readline nn va su una nuova riga ma si ferma al carrattere di fine riga ( se nn ricordo male ) quindi x ottenere l'indice di inizio riga dovresti fare (file.getFilePointer() - riga.length()) ![]() Codice:
RandomAccessFile file = new RandomAccessFile("file.txt", "rw"); String riga = ""; while ((riga = file.readLine()) != null) { file.seek(file.getFilePointer()); file.write("xd"); // rillego la riga x mandare il cursore a capo file.readLine(); } |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
A parte questo, che potrebbe pure andare bene, sai che casino succede se alla stessa posizione in cui si trova una riga, cerchi di scrivere una riga più corta o peggio più lunga di quella letta??? Se scrivi una più corta, rimane un pezzo finale della riga letta, se scrivi una più lunga, peggio ancora vai a sovrascrivere la riga successiva. ![]()
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#8 | |
Member
Iscritto dal: Jan 2008
Città: roma
Messaggi: 296
|
![]() ![]() Quote:
![]() a me e capitato a lavoro un po di tempo fa.. che hanno aggiunto una riga su questi file ... ma nn fanno readLine , settano seplicemente l'indice con l'indice attuale + il numero di carrateri fino alla prox riga da aggiornare ![]() cmq invecce di scrivere righe potresti scrivere le stringhe e ti riaggiorni tutta una stringa x volta (xo il file diventa illeggibile all occhio umano ![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:03.