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 | 1159 (961) | vorantz |
» | [c#] shrani text, tabele, slikeOddelek: Programiranje | 1591 (1197) | klemen93 |
» | C# Branje iz datotekeOddelek: Programiranje | 1024 (833) | boogie_xlr |
» | VC# Zapis podatkov na diskOddelek: Programiranje | 2584 (1840) | matej_jack |
» | [VB 2005] branje tekstaOddelek: Programiranje | 1703 (1371) | mNeRo |