Forum » Programiranje » [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.
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?
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.
Če pa tega nočeš, pa lahko po vsakem "splitanju" preveriš dolžino tabele:
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!
@^TMS^, s prvim načinom ni delovalo, z drugim pa dela. Hvala!
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [c#] preberi tekst ločen na deleOddelek: Programiranje | 1095 (897) | vorantz |
» | [c#] shrani text, tabele, slikeOddelek: Programiranje | 1524 (1130) | klemen93 |
» | C# Branje iz datotekeOddelek: Programiranje | 984 (793) | boogie_xlr |
» | VC# Zapis podatkov na diskOddelek: Programiranje | 2516 (1772) | matej_jack |
» | [VB 2005] branje tekstaOddelek: Programiranje | 1655 (1323) | mNeRo |