|
|||||||
|
|
|
![]() |
|
|
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: 2780
|
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
|
io l'ho detto che e una cosa contorta 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 , ma poi ho fatto con readLine che e + decente , cmq un altro problema e che devi tenere conto e che contano anche i carratteri di fine riga , che poi nn hanno la stessa lunghezza in unix e windows ... 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: 02:45.












...
, ma poi ho fatto con readLine che e + decente , cmq un altro problema e che devi tenere conto e che contano anche i carratteri di fine riga , che poi nn hanno la stessa lunghezza in unix e windows ...
)








