» »

[C#]Iz datoteke v LinkedList

[C#]Iz datoteke v LinkedList

abyssus ::

Rad bi prebral podatke iz datoteke v LinkedList. Poskusil sem takole, a ne gre.

                        public void fromFile()
                        {
                                // TODO : Branje podatkov iz datoteke v LinkedList

                                string pot = "textfile.txt";

                                using (StreamReader sr = new StreamReader(pot))
                                {
                                        String vsobesedilo = sr.ReadToEnd();
                                        String[] vrstice = vsobesedilo.Split('\n');

                                        foreach (string besedilo in vrstice)
                                        {
                                                Console.WriteLine(besedilo);
                                        }

                                        foreach (String vrstica in vrstice)
                                        {
                                                String[] obj = vrstica.Split(' ');
                                                Oseba os = new Oseba(obj[0], obj[1]);
                                                seznam_oseb.AddLast(os);
                                        }
                                }
                        }


Ima kdo kakšno idejo, ker poiskušam vse mogole pa ne gre. Javi mi napako, da je indeks izven meja polja, pri ustvarjanju novega objekta, pa ne razumem zakaj. Zakaj se v polje obj ne vpiše vrstica po vrstica, vsakič znova ampak se vpiše celoten string vrsice naenkrat?

^TMS^ ::

Problem je v tem, da ti na koncu prebere še prazno vrstico, ta pa se ne "split-a".

Tega se lahko enostavno lotiš tako, da dodaš Split stavku še dodatne opcije, da izbriše prazne vrstice.
String[] vrstice = vsobesedilo.Split(new string[] {System.Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries);


Če pa tega nočeš, pa lahko po vsakem "splitanju" preveriš dolžino tabele:
if(obj.Length < 2) continue;
To iterate is human, to recurse divine.

gnomee ::

Probaj s spodnjim primerom ter sporoči če deluje, ker sem na pamet pisal..

using (StreamReader sr = new StreamReader(pot)){
String vrstica = sr.ReadLine();
                
if (vrstica != null)
{
   String[] vsoBesedilo = vrstica.Split('\n');
   String[] vrstice = vsoBesedilo.Split(' ');

   Oseba os = new Oseba(obj[0], obj[1]);
   seznam_oseb.AddLast(os);
}

abyssus ::

@gnome, ne moreš splitat stringa, ki je polje. (string[] vrstice = vsoBesedilo.Split(' '); // ne gre
@^TMS^, s prvim načinom ni delovalo, z drugim pa dela. Hvala!


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[c#] preberi tekst ločen na dele

Oddelek: Programiranje
121095 (897) vorantz
»

[c#] shrani text, tabele, slike

Oddelek: Programiranje
251524 (1130) klemen93
»

C# Branje iz datoteke

Oddelek: Programiranje
5984 (793) boogie_xlr
»

VC# Zapis podatkov na disk

Oddelek: Programiranje
422516 (1772) matej_jack
»

[VB 2005] branje teksta

Oddelek: Programiranje
241655 (1323) mNeRo

Več podobnih tem