
c# IO (Streamwriter - připisování do souboru)
Zdravím, potřeboval bych v C# dořešit v jednoduché databázi ukládání do textového souboru pomocí StreamWriter. Do souboru zapisuji pomocí cyklu pole. Potřebuji, aby se při přidání dalšího prvku nezapsaly do souboru prvky, které již v souboru jsou. Napadá mě, že by šlo upravit v cyklu int i - aby se pokračovalo od posledního prvku v souboru.
using (StreamWriter sw = new StreamWriter(@"databaze.txt"))
{
for (int i = 0; i < (pole.Length - pocetSmazanych); i++)
{
sw.Write(i + " " + pole[i][0] + ";" + pole[i][1] + ";" + pole[i][2]);
}
}
vím, že se při připisování do souboru přidá za název souboru true :
using (StreamWriter sw = new StreamWriter(@"databaze.txt", true))
ale potřebuji, jak jsem již zmínil zapsat pouze ty prvky, které ještě v souboru nejsou.
Děkuji za rady.
Nebude jednodušší celý ten soubor prostě vždy zapisovat celý? Pokud to není nějaký obří soubor, tak to bude rychlé a jednoduché.
Asi to bude lepší - obří není. Mohl bych tě poprosit o ppříklad kodu jak by to mělo vypadat, aby se do souboru zapisovaly jen ty prvky, které tam ještě nejsou?
Děkuji
Načteš si obsah toho souboru, porovnáš v aktuálními prvky, uložíš jenom nové.
Nemůžeš pls alespoň kousek toho kódu? - tohle dělám poprvé.
Kousek kódu čeho konkrétně?
No nejlépe celý, ale hlavně mi jde o to porovnávání a následné uložení.
Díky
Tak celý ti to určitě psát nebudu. Napiš, co konkrétně nevíš a můžeme pokračovat.
Porovnávání a následné uložení do souboru. A jdou v C# indexovat řádky jako v Basicu?
To není moc konkrétní, to jsi v podstatě napsal to, co jsem ti napsal já. Čemu konkrétně říkáš indexace řádků?
Nevim jak ti to mam napsat konkrétněji - prostě potřebuji zajistit to , aby se do souboru zapisovaly jen ty prvky, které tam ještě nejsou.
Funguje mi ukládání buď tak, že se celý soubor při uložení přepíše (tím pádem zmizí data, které v něm byla dříve) a nebo takto:
kdy se mi sice do souboru prvky přidají, ale všechny (ne jen ty, které tam nebyly)
Takže potřebuji zajistit aby se do souboru zapisovaly jen ty prvky, které tam ještě nejsou.
Za indexaci řádků jsem považoval možnost uložit data na konkrétní číslo řádku jako v Basicu.
Tak třeba:
1. načteš jednotlivé řádky do pole pomocí File.ReadAllLines.
2. z jednotlivých řádků si vytvoříš stejnou strukturu, jako jsi měl před tím (pole[][]), např. pomocí string.Split
3. porovnáš takto získanou strukturu se stávající. Buď pomocí dvou vnořených cyklů, nebo pokud tam bud nějaký identifikátor, tak pomocí Hashsetu
4. Co ve stávajícím poli přebývá, to připíšeš do souboru.
Tak to zkouším, ale nevím jak dál:
1:
To je snad dobře, ale nevím jak dál - když mám to pole dvourozměrné.
Díky i za ty odkazy na msdn, ale opravdu nevím.
Mohl bys mně prosím napsat kód v C#, jak by to mělo vypadat v mém kokrétním případě?
Děkuji moc
Druhý rozměr z toho uděláš tím druhým krokem.
Můžeš mi to prosím napsat jako kód v C#?
Vidím, že vlastní snaha už dneska lidem moc neříká.