Italian cancellare il contenuto di un file

tmtube73

Active Member
Licensed User
sbaglio qualcosa ma non capisco cosa

ho un edittext in cui scrivo testo a caso

poi un pulsante "salva" salva il file con questo codice:

B4X:
Sub SalvaFile
    ScriviTxt.Initialize2(File.OpenOutput(File.DirInternal, "miei_dati.txt", True), "UTF8")
    ScriviTxt.Write(EditText1.Text)
    ScriviTxt.Close
End Sub

all'avvio dell'app carico il contenuto del file con questo codice:

B4X:
Sub LeggiFile
    If File.Exists(File.DirInternal, "miei_dati.txt") = False Then
        xui.MsgboxAsync("Non ho trovato il file da leggere!", "Attenzione!")
        Return
    End If
    LeggiTxt.Initialize2(File.OpenInput(File.DirInternal, "miei_dati.txt"), "UTF8")
    EditText1.Text = LeggiTxt.ReadAll
    LeggiTxt.Close  
End Sub

un pulsante "cancella" dovrebbe eliminare il contenuto del file ma non funziona il codice errato è questo:

B4X:
Sub SvuotaFile
    ScriviTxt.Initialize2(File.OpenOutput(File.DirInternal, "miei_dati.txt", True), "UTF8")
    EditText1.Text=""
    ScriviTxt.Write(EditText1.Text)
    ScriviTxt.Close
End Sub

quando clicco il tasto "cancella" il contenuto della edittext viene cancellato correttamente ma al prossimo avvio della app viene nuovamente caricato il contenuto del file che non è stato cancellato

cosa sbaglio?
 

tmtube73

Active Member
Licensed User
ho un altro problema con questo codice

eseguo la app e nella edit text scrivo "ciao1"

esco dalla app poi rientro e carico "ciao1" sotto scrivo "ciao2" ed esco

al prossimo riavvio della app ottengo
ciao1ciao1
ciao2

come se il file non viene riscritto con il solo contenuto della seconda sessione, mi aspettavo infatti
ciao1
ciao2

forse devo eliminare il file ogni volta prima di salvarlo? credo funzioni ma non mi pare ottimale

consigli? grazie.
 

LucaMs

Expert
Licensed User
Longtime User
ScriviTxt.Write(EditText1.Text)
Quella riga appende (accoda) il testo scritto nella EditText.Text (ovvero una stringa vuota, nel tuo caso), non sostituisce il contenuto del file, in quanto hai aperto il writer con l'opzione Append impostata su True;
ScriviTxt.Initialize2(File.OpenOutput(File.DirInternal, "miei_dati.txt", True), "UTF8")

Potresti usare direttamente:
B4X:
File.Delete(File.DirInternal, "miei_dati.txt")
 

Sagenut

Expert
Licensed User
Longtime User
Se vuoi eliminare il file prova con
File.Delete(File.DirInternal, "miei_dati.txt":
File.Delete(File.DirInternal, "miei_dati.txt")
 

Sagenut

Expert
Licensed User
Longtime User
Abbiamo scritto quasi insieme. 🤣
 

tmtube73

Active Member
Licensed User
confermo cancellando il file prima di salvarlo funziona ma non mi pare la strada giusta

rettifico non avevo aggiornato la pagine e non avevo visto le vostre risposte ora guardo grazie a entrambi
 

tmtube73

Active Member
Licensed User
grazie molte è stato sufficiente impostare a false questa riga

B4X:
ScriviTxt.Initialize2(File.OpenOutput(File.DirInternal, "miei_dati.txt", False), "UTF8")
 
Top