Cancellare singola stringa da file di testo

venerdì 02 luglio 2004 - 13.13

hipernik Profilo | Newbie

Buongiorno, ho un file di testo con n stringhe, carico questo file di testo in una Listbox, fin qui tutto bene. L'utente modifica la Listbox togliendo elementi (l'utente puo' solo togliere elementi dalla Listbox e puo' togliere solo quello piu' in alto), a questo punto l'utente decide di salvare il contenuto della Listbox nel file, quindi devo, semplicemente togliere dal file gli elementi che non sono più presenti nella Listbox.
Non riesco a capire come togliere stringhe da un file di testo!
Ho aggirato l'ostacolo in questo modo: Cancello completamente il file di testo, creo un nuovo file di testo con il nome di quello vecchio e carico tutto il contenuto della Listbox nel file appena creato. E' una soluzione poco elegante perchè se ho 1000 stringhe e ne cancello una il mio programma le cancella tutte e 1000 e ne riscrive 999

ecco alcuni pezzi di codice che ho scritto:

System.IO.File.Delete("Lista_prodotti.txt") 'cancello tutto

Dim Lista_prodotti As FileStream = System.IO.File.Create("Lista_prodotti.txt", 1024) ' ricreo
Lista_prodotti.Close()

Dim Lista_password As TextWriter = System.IO.File.AppendText("Lista_prodotti.txt")

Do
Lista_prodotti.WriteLine(List2.GetItemText(0)) 'prendo gli elementi della lista e li metto nel file
List2.Items.RemoveAt(0)
Loop While (VB6.GetItemString(List2, 0) <> Nothing)

Lista_prodotti.Close()

Grazie ancora dell'aiuto

Brainkiller Profilo | Guru

Avevo appena letto metà del tuo post quando già mi stavo accingendo a risponderti che forse era meglio sovrascrivere il file vecchio.
Il file .txt ha una struttura sequenziale quindi comunque se vuoi arrivare a una certa linea, non puoi dire vai alla linea 540 cancellala e riampiazzala con questa. Devi chiamare n volte il metodo ReadLine() oppure una volta il metodo ReadToEnd() e comunque devi leggerti tutto il file un'altra volta. Poi dovresti comunque operare rimpiazzando o eliminando caratteri o intere righe e a livello di performance non è una scelta molto valida.
Questa è la natura del file .txt che non è un Database dove puoi cancellare record più semplicemente.
Se il numero di righe è 1000 o giù di lì ti consiglio di procedere ricostruendo il file da zero.

ciao
david
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5