Brisanje samo jedne linije iz txt fajla

1

Brisanje samo jedne linije iz txt fajla

offline
  • Ognjen
  • Pridružio: 16 Nov 2011
  • Poruke: 20
  • Gde živiš: Novi Sad

Pozdrav, imam problem, evo o cemu se radi. Imam jedan listbox i u njemu imam nesto ispisano, sve to sto imam u listboxu ja imam i u txt fajlu, mene zanima kako mogu da obrisem ono sto sam obelezio u listboxu, da mi se obrise i iz txt fajla, ali samo ta linija, pokusavao sam nesto ovako

  1. int brojlinije = Convert.ToInt32(listBox1.SelectedIndex), prom = 0;
  2.           string izbrisi = null;
  3.           StreamReader reader = new StreamReader("korisnici.txt");
  4.           while ((izbrisi = reader.ReadLine()) != null)
  5.           {
  6.               prom++;
  7.               if (prom == brojlinije)
  8.                   continue;
  9.           }
  10.           reader.Close();
  11.           StreamWriter sw = new StreamWriter("korisnici.txt");
  12.           sw.WriteLine(izbrisi);
  13.           sw.Close();

ali obrise mi sve zato sto je na kraju streamwriter, problem je sto izgleda ne mogu u isto vreme i streamwriter i streamreader na isto mesto, ako neko moze da mi pomogne bio bih jako zahvalan Smile



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 26 Okt 2008
  • Poruke: 1560
  • Gde živiš: Sremski Mihaljevci

ne razumem ovaj kod jer radim u vb. ja bi to mozda uradio tako da ti txt fajl ucita u listbox, i onda jedan mali i izmenjeni deo koda iz change background programa koji sam pravio

  1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.         ListBox1.Items.RemoveAt(ListBox1.SelectedIndex)
  3.  
  4.         Dim savef As New System.IO.StreamWriter(Application.StartupPath & "\Images.txt")
  5.         For I As Integer = 0 To ListBox1.Items.Count - 1
  6.             savef.Write(ListBox1.Items(I).ToString & ControlChars.NewLine)
  7.         Next
  8.         savef.Close()
  9.     End Sub


znaci prvi deo koda ti brise red koji selektujes a drugi deo te sve redove u listboxu cuva u txt fajl bez obzira sta ti je ranije pisalo. ok??



offline
  • Ognjen
  • Pridružio: 16 Nov 2011
  • Poruke: 20
  • Gde živiš: Novi Sad

Pokusavao sam i ja tako, ali ne uspevam :/

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12405

Ovo što je Peki dao radi u teoriji.
Šta Pekijev kod radi?
- Briše unos iz liste
- Sačuva listu
- tako što provuče sve unose kroz petlju i u isto vreme dodaje posle svakog unosa
- Petlja radi tako što ponavlja isti kod sve dok indeks liste ne bude -1 , zašto -1? Zato što je prvi indeks u listi uvek 0.

Možeš da koristiš StreamWriter i StreamReader u isto vreme ali moraš da ih deklarišeš posebno.


Nađoh online servis koji verovanto ne konvertuje dobro ali poslužiće da te uputi u ovo

  1. private void  // ERROR: Handles clauses are not supported in C#
  2. Button1_Click(System.Object sender, System.EventArgs e)
  3. {
  4.  ListBox1.Items.RemoveAt(ListBox1.SelectedIndex);
  5.  System.IO.StreamWriter savef = new System.IO.StreamWriter(Application.StartupPath + "\\Images.txt");
  6.  for (int I = 0; I <= ListBox1.Items.Count - 1; I++) {
  7.     savef.Write(ListBox1.Items(I).ToString + ControlChars.NewLine);
  8.  }
  9.  savef.Close();
  10. }
  11. //=======================================================
  12. //Service provided by Telerik (www.telerik.com)
  13. //Conversion powered by NRefactory.
  14. //Twitter: @telerik, @toddanglin
  15. //Facebook: facebook.com/telerik
  16. //=======================================================


[Link mogu videti samo ulogovani korisnici]

@ Peki
Nisam ni rekao da briše sve i ponavlja, rekao sam da ide od poslednjeg indeksa do -1 tj, do indeksa 0 što je stavka 1 u listi.

Kod koji čuva nema veze sa brisanjem iz tvog primera, on samo briše jednu stavku iz liste posle čega sledi pisanje cele liste.


Kod koji radi isto u vb.net-u je :

  1. Dim pisi_ime_liste As New IO.StreamWriter(Application.StartupPath & "\Plejliste\Lista.lst")
  2.           Dim i2 As Integer
  3.           For i2 = 0 To ListBox1.Items.Count - 1
  4.               pisi_ime_liste.WriteLine(ListBox1.Items.Item(i2))
  5.           Next
  6.           pisi_ime_liste.Close()


Ja koristim ovaj deo za Shampoo Club

LM Možeš i da učitaš tekst u niz i posle obrišeš posebnu stavku niza u zavisnosti od indeksa liste.

offline
  • Pridružio: 26 Okt 2008
  • Poruke: 1560
  • Gde živiš: Sremski Mihaljevci

ne ponavlja se dok ne pobrise sve odnosno dok ne stigne do -1 vec samo jedan index brise i tako cuva...

offline
  • Ognjen
  • Pridružio: 16 Nov 2011
  • Poruke: 20
  • Gde živiš: Novi Sad

@Srki94 nece da radi daje mi error ovde:

(ListBox1.Items(I).ToString + ControlChars.NewLine);

kod .items, a i verovatno trebam nesto da includujem za controlchars...

offline
  • Pridružio: 16 Nov 2011
  • Poruke: 8
  • Gde živiš: Novi Sad

Cushpajz ::@Srki94 nece da radi daje mi error ovde:

(ListBox1.Items(I).ToString + ControlChars.NewLine);

kod .items, a i verovatno trebam nesto da includujem za controlchars...


Stavi umesto obicnih zagrada kod ovoga ListBox1.Items(I).ToString, probaj ListBox1.Items[I]

offline
  • Ognjen
  • Pridružio: 16 Nov 2011
  • Poruke: 20
  • Gde živiš: Novi Sad

probao sam i tako i nece..

offline
  • Pridružio: 23 Jan 2012
  • Poruke: 1

Da se i ja upisem u forum Smile


Princip:
1. Loadujemo listu u Form_Load eventu
2. Obrisemo neki item iz liste
3. Sacuvamo listu u isti fajl
4. loadujemo fajl nazad (nije neophodno ali je pozeljno)

Koristicemo 2 funkcije odnosno sub-a, LoadData i SaveData.

U namespace (vrh modula):

  1. Imports System.IO

LoadData(ByVal Path as String) gde je Path putanja do tekstualnog fajla kojeg cemo citati:
  1. Public Sub LoadData(ByVal Path as String)
  2. If File.Exists(path) Then 'proveravamo da li fajl postoji.
  3.     Listbox1.Items.Clear() 'obrisacemo listu svaki put kada budemo pravili izmene.
  4.     Dim r As New StreamReader(path) 'definisemo streamreader za citanje naseg fajla
  5.     Do While Not r.EndOfStream 'ponavljamo loop sve dok ne dodjemo do kraja fajla.
  6.         Listbox1.Items.Add(r.ReadLine) 'dodajemo svaku liniju fajla u listu.
  7.     Loop 'govorimo aplikaciji da se vrati na Do While sve dok ne zavrsi citanje,
  8.             'a zatim nastavi na sledecu liniju koda:
  9.     r.Close() ' zatvaramo fajl koji citamo (obavezno na kraju citanja/pisanja)
  10. Else
  11.     'fajl ne postoji, izbaci gresku:
  12.     MsgBox("Fajl " & Path & " ne postoji.", MsgBoxStyle.Critical, "Greska")
  13. End If
  14. End Sub

SaveData(ByVal Path as String) gde je Path takodje putanja do tekstualnog fajla u koji cemo pisati:
  1. Public Sub SaveData(ByVal Path as String)
  2.     Dim w As New StreamWriter(path) 'definisemo streamwriter za pisanje u fajl
  3.     For i = 0 to Listbox1.Items.Count -1 'ponavljamo loop sve dok ne dodjemo do kraja liste.
  4.         Listbox1.Items.Add(r.ReadLine) 'dodajemo svaki item iz liste u nas fajl.
  5.     Next 'govorimo aplikaciji da se vrati na For sve dok ne zavrsi dodavanje u fajl,
  6.             'a zatim nastavi na sledecu liniju koda:
  7.     w.Close() ' zatvaramo fajl u koji pisemo (obavezno na kraju citanja/pisanja)
  8. End Sub

Koriscenje:
Form_Load event:
  1. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
  2. LoadData(Application.StartupPath & "\lista.txt") 'ovde prepravi putanju do tvog fajla.
  3. End Sub

Button1_Click event:
  1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
  2. ListBox1.Items.RemoveAt(ListBox1.SelectedIndex)
  3. SaveData(Application.StartupPath & "\lista.txt") 'ovde prepravi putanju do tvog fajla.
  4. LoadData(Application.StartupPath & "\lista.txt") 'ovde prepravi putanju do tvog fajla.
  5. End Sub

offline
  • Pridružio: 26 Okt 2008
  • Poruke: 1560
  • Gde živiš: Sremski Mihaljevci

odlicno. najbolje ovako Smile

Ko je trenutno na forumu
 

Ukupno su 1115 korisnika na forumu :: 93 registrovanih, 5 sakrivenih i 1017 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: -[CoA]-, Arsenije, Asteker, avijacija, B61, babaroga, bestguarder, Bivan, Blair, BORUTUS, Bubimir, Car89, Cili, Clouseau, debeli, DeerHunter, deLacy, Demi87, Dimitrise93, dj.ape, draganl, dukajov, Giro77, gomago, GORDI, hnjo, Igritelj, ivica976, Joja, Kalem, kenny74, Klecaviks, kokodakalo, Kototamopeva, Kubovac, Kukuvaja, kybonacci, lukac, madun123, MarkoD, mat, mikrimaus, milenko crazy north, Miletić Zoran, Milometer, Milos1389, N.e.m.a.nj.a., N95, nebkv, nextyamb, nikolapetkovic, niksa517, oblivion, opt1, Pangea, Papadubi, Pekman, Pilence, pobeda, Povratak1912, Prašinar, probisic, procesor, raptorsi, Rebel Frank, repac, Rusmir, samo opusteno, SamostalniReferent, Sir Budimir, SOVO515, StalniPromatrač, starlights, Strasni JA, strelac07, taackee, tamno.nebo, tooljan, Trivo, Utd4ce, vedko, Veselimalisa, vjetar, Vlada1389, vrag81, Vrač, vukajlo71, wolverined4, X3, zlaya011, zmajognjeniivan, |_MeD_|, šumar bk2