Avatar
Veganekk
Člen
Avatar
Veganekk:

Chci se zeptat jak na zapisování do souboru TXT. Umím z něj číst ale při zapisování mi to nejde...
ZDE JE MOJE FUNKCNI CTENI ZE SOUBORU

public string slozka
        {
            get
            {
                //application.... - vraci nazev souboru ktery je spusten!
                FileInfo fi = new FileInfo(Application.ExecutablePath);
                return fi.DirectoryName;
            }
        }
public string nactenisoubor()
        {
            string fn = slozka + "\\DATABAZE.txt";
            if (File.Exists(fn)
            {
                string[] uloz= File.ReadAllLines(fn, Encoding.GetEncoding("WINDOWS-1250"));
                int i = 0;
                return uloz[i];
            }
        }

Chci se zeptat jde udělat toto nebo ne? A kdyztak poradite prosím

public string slozka
        {
            get
            {
                //application.... - vraci nazev souboru ktery je spusten!
                FileInfo fi = new FileInfo(Application.ExecutablePath);
                return fi.DirectoryName;
            }
        }
public string nactenisoubor()
        {
            string fn = slozka + "\\DATABAZE.txt";
            if (File.Exists(fn)
            {
                string[] uloz= File.WriteAllLines(fn, Encoding.GetEncoding("WINDOWS-1250"));
                int i = 0;
                return uloz[i];
            }
        }

Jde to nejak upravit aby to zapisovalo nebo ne? Dekuji

Odpovědět 4.3.2013 19:30
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Veganekk
matesax:

Co to je? Proboha!

using (StreamDdd sr/sw = new StreamDdd(new FileStream("path", parameters)))

StreamDdd dej buď "StreamReader", nebo "StreamWriter" podle toho ten název proměnné... Path == cesta k souboru - nejlépe v ApplicationData:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Složka\nazev.pripona"

No a dovnitř usingu dáš buď

sr.Read(Line/ToEnd)();

nebo

sw.Write(Line)("ddd");
Editováno 4.3.2013 19:37
 
Nahoru Odpovědět 4.3.2013 19:35
Avatar
Odpovídá na matesax
Luboš Běhounek (Satik):

Co znamená ta zkratka ddd, kterou tak často používáš?
Doporučená denní dávka to asi nebude, že? :D

Nahoru Odpovědět  +3 4.3.2013 20:06
:)
Avatar
matesax
Redaktor
Avatar
Avatar
Veganekk
Člen
Avatar
Veganekk:

nchápu to -_-
Můžes ještě jednou a vysvětlit jak na to? Totálně jsme se vtom zamotal....;(

Nahoru Odpovědět 4.3.2013 20:53
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Veganekk
matesax:

Protože na to jdeš kdo ví jak - čtení:

string text = "";

using (StreamReader sr = new StreamReader("ceta"))
    text = sr.ReadToEnd();

nebo:

using (StreamReader sr = new StreamReader(new FileStream("ceta", parametry)))
    text = sr.ReadToEnd();

nebo:

string line = "";

using (StreamReader sr = new StreamReader(new FileStream("ceta", parametry)))
    while ((line = sr.ReadToEnd()) != null)
        text += Enfironment.NewLine + line;

nebo:

using (StreamReader sr = new StreamReader(new FileStream("ceta", parametry)))
{
    ddd
}

Zápis:

using (StreamWriter sw = new StreamWriter("ceta"))
    sw.Write(ddd);

nebo:

using (StreamWriter sw = new StreamWriter(new FileStream("ceta", parametry)))
    sw.WriteLine(ddd);

A kvlůli těm 6000000 možnostem se mi to nechtělo vypisovat... Je to tu, i v manuálu - tak proč si to neprojdeš? :)

 
Nahoru Odpovědět 4.3.2013 21:10
Avatar
Veganekk
Člen
Avatar
Veganekk:

Furt to nejde.... :/ Zkousel jsem par kodu od tud
http://www.itnetwork.cz/…-soubory-txt
ALE VUBEC NEJDE ://

Nahoru Odpovědět 4.3.2013 21:33
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Odpovídá na Veganekk
Luboš Běhounek (Satik):

Nepoužívej při popisování problémů slovo nejde, tím ostatním neřekneš vůbec nic - jestli to nejde zkompilovat, hází to chybu nebo to nefunguje tak, jak by mělo...

Nahoru Odpovědět 4.3.2013 22:12
:)
Avatar
Veganekk
Člen
Avatar
Veganekk:

Nejde mi vubec nic zkousel jsem toto z knizky

StreamReader sr=new StreamReader(fn);//Cestna souboru je v promene fn
string s=sr.ReadToEnd();
sr.Close();
return s;

Nic se nestane. Po zmacknuti se nic nestane a hodi to chybovou hlasku ve VISUAL .

Nahoru Odpovědět 4.3.2013 22:18
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Honza Bittner
Redaktor
Avatar
Odpovídá na Veganekk
Honza Bittner:

tak sem tu chybovou hlášku napiš ne :D

Nahoru Odpovědět 4.3.2013 22:22
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
Michal Maršálek:

Máš tam

using System.IO;

?

 
Nahoru Odpovědět 4.3.2013 22:28
Avatar
Veganekk
Člen
Avatar
Veganekk:

mám fakticky nevim kde je chyba docela me to stve :(

Nahoru Odpovědět 4.3.2013 22:32
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Veganekk
matesax:

Proč nepoužíváš using? (Pro StreamDdd.)

using System.IO;

...

using (StreamReader sr = new StreamReader("ceta"));

Jít musí.

Editováno 5.3.2013 5:46
 
Nahoru Odpovědět 5.3.2013 5:46
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Veganekk
David Čápka:

Pokud sem nenapíšeš tu chybovou hlášku tak s tím asi nic neuděláme, protože křišťálová koule je zase v čistírně. Jak je to v tutoriálu, tak to funguje. Ještě mě napadá jestli jsi četl tohle: http://www.itnetwork.cz/…e-se-soubory

Nahoru Odpovědět  +2 5.3.2013 7:56
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Honza Bittner
Redaktor
Avatar
Honza Bittner:

zkus něco takového na uložení ...

using (StreamWriter sw = new StreamWriter(@"data/save.txt"))
            {
                sw.WriteLine(a);
                sw.WriteLine(b);
                sw.WriteLine(c);

                sw.WriteLine(d);
                sw.WriteLine(e);
                sw.WriteLine(f);

                sw.Flush();
                sw.Close();
            }
Nahoru Odpovědět 5.3.2013 15:15
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
Veganekk
Člen
Avatar
Veganekk:

Kod mám vloženy takto : NEVIM CO DAT DO PARAMETRU

private void button3_Click(object sender, EventArgs e)
       {   string s = "";
           string fn = slozka + "\\DATABAZE.txt";
           using (StreamReader sr = new StreamReader(new FileStream(fn,JSEM NEVIM CO MÁM NAPSAT)))
               text = sr.ReadToEnd();

Píše mi to tuto chybu :

Chyba   2       'System.IO.FileStream' neobsahuje konstruktor, který přijímá 1 argumentů   c:\users\tsuna\documents\visual studio 2012\Projects\ZAPISDOSOUBORUACETNI(sam,slovpocet,...)\ZAPISDOSOUBORUACETNI(sam,slovpocet,...)\Form1.cs   103     55      ZAPISDOSOUBORUACETNI(sam,slovpocet,...)
Nahoru Odpovědět 6.3.2013 10:17
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Veganekk
Petr Nymsa:

Visual studio je dost dobrý pomocník a napovídá ti :). Každopádně musíš minimálně připsat FileMode. V tvém případě Open.

StreamReader sr = new StreamReader(new FileStream(fn,FileMode.Open)))
Editováno 6.3.2013 10:48
Nahoru Odpovědět 6.3.2013 10:47
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
matesax
Redaktor
Avatar
Odpovídá na Honza Bittner
matesax:

Proč čistíš a zavíráš v using?

 
Nahoru Odpovědět 6.3.2013 10:51
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Chceš tím naznačit, že ten buffer nemusí čistit a že nemusí ten soubor zavírat? Jak ho pak zavřeš?

Nahoru Odpovědět 6.3.2013 10:54
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

using? Od čeho tam asi je...

 
Nahoru Odpovědět 6.3.2013 11:07
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Já jenom že v C# nefungují destruktory jak by měly a pokud by se soubor zavíral až destruktorem, bylo by to špatně.

Pokud to using provádí jinak, tak je to OK.

Nahoru Odpovědět 6.3.2013 11:21
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka:

Nevím nic o tom že by using vyvolal Flush(), zavolá jen Close(), s tím máš pravda, že tam být nemá.

Nahoru Odpovědět 6.3.2013 11:22
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Veganekk
David Čápka:

To jsi se do toho tutoriálu asi moc nedíval chlape...

Nahoru Odpovědět 6.3.2013 11:22
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Čápka
matesax:

Nač čistit buffer před zavřením? Ano - using to zavře. Není tam další zápis - nač tedy čistit?

Editováno 6.3.2013 11:32
 
Nahoru Odpovědět 6.3.2013 11:30
Avatar
Odpovídá na matesax
Luboš Běhounek (Satik):

Flush() nejen ten buffer vyčistí, ale taky zapíše ty data, samotné WriteLine () je do toho souboru ještě neuloží hned.

Naštěstí Close() interně Flush() volá.

Nahoru Odpovědět  +2 6.3.2013 11:40
:)
Avatar
Honza Bittner
Redaktor
Avatar
Odpovídá na Veganekk
Honza Bittner:
string fn = slozka + "\\DATABAZE.txt";

hele ... kde máš definovanou cestu k SLOZKA ... ?

Editováno 6.3.2013 12:42
Nahoru Odpovědět 6.3.2013 12:42
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
matesax
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
matesax:

Ano - nevyjádřil jsem se správně - jelikož spěchám - ve škole nesmíme být na PC... Prostě stačí jen using - je od toho, že se o tyto věci postará...

 
Nahoru Odpovědět 6.3.2013 12:42
Avatar
Veganekk
Člen
Avatar
Veganekk:

Trošku jsem se zamotal v tom kdo má pravdu... Ale když jsme u toho jak mohu z txt dat precist data a vlozit do LISTU STRINGU ? NEJDE MI TO A PISE TO CHYBU...

 public string slozka
        {
            get
            {
                //application.... - vraci nazev souboru ktery je spusten!
                FileInfo fi = new FileInfo(Application.ExecutablePath);
                return fi.DirectoryName;
            }
        }

            List<string> textak = new List<string>();
StreamReader sr = new StreamReader(new FileStream(fn, FileMode.Open));
            textak = sr.ReadToEnd();

Chyba piše tuto chybu.

Chyba   2       Typ 'string' nelze implicitně převést na typ 'System.Collections.Generic.List<string>'       c:\users\tsuna\documents\visual studio 2012\Projects\ZAPISDOSOUBORUACETNI(sam,slovpocet,...)\ZAPISDOSOUBORUACETNI(sam,slovpocet,...)\Form1.cs   115     20      ZAPISDOSOUBORUACETNI(sam,slovpocet,...)
  • Jak mohu zjistit v textaku pocet řádku když jsme u toho.

Děkuju za každou radu.

Nahoru Odpovědět 7.3.2013 10:30
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Odpovídá na Veganekk
Luboš Běhounek (Satik):

Jednodušší bys měl použít třídu File:

String soubor = "C:\Složka\soubor.txt";
String[] radkySouboru = File.ReadAllLines(soubor);
Console.WriteLine("Pocet radku: " + radkySouboru.Length);

V poli radkySouboru máš pak načtený celý soubor, co jeden řádek, to jeden String v poli.

Podobně pak můžeš zapisovat, třeba:

String soubor = "C:\Složka\soubor.txt";
String[] radkyKZapsani = new String[3] {"Řádek 1", "Řádek 2", "Řádek 3"};
File.WriteAllLines(soubor, radkyKZapsani);
Nahoru Odpovědět 7.3.2013 10:54
:)
Avatar
CzMarty
Člen
Avatar
CzMarty:

kazdopadne jako standartni metoda při zapisu do souboru se pouziva StreamWriter :D ale jako pouzit tridu File je urcite jednodussi jenze ne všichni se v tom dokazi orientovat :D

Nahoru Odpovědět 7.3.2013 11:20
Žiješ jen jednou. Tak žij pořádně :D
Avatar
matesax
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
matesax:

Blbost - using je lepší - nejen, že vyřeší správné uzavření souboru atd., ale i celkově jeho použití je jednodušší, praktičtější,... A zapsat pole stringu v něm můžeš také - jenže proč?

 
Nahoru Odpovědět 7.3.2013 11:21
Avatar
Odpovídá na matesax
Luboš Běhounek (Satik):

Třída File všechno řeší za tebe, jedním řádkem kódu zapíšeš/načteš soubor do stringu nebo řádky souboru do pole stringů, pokud nepotřebuješ v tu chvíli řešit něco pokročilejšího (třeba načítat jen něco, používat kompresi apod.), tak je to nejjednodušší postup, všechno včetně otevření a zavření souboru a uvolnění prostředků dělá za tebe...

Nahoru Odpovědět  +1 7.3.2013 11:30
:)
Avatar
CzMarty
Člen
Avatar
CzMarty:

urcite souhlasim se satikem :D

Nahoru Odpovědět 7.3.2013 11:32
Žiješ jen jednou. Tak žij pořádně :D
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

I v PHP je lepší používat tyto specializované třídy a metody, protože řeší kolizi více procesů pracujících s jedním souborem. Je to použitelné vždy, kdy potřebuji číst nebo zapisovat celý soubor naráz, případně appendovat jeden blok textu. Zpravidla je to i rychlejší.

Je to vynikající například při logování chyb.

Nahoru Odpovědět 7.3.2013 11:36
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na matesax
Luboš Běhounek (Satik):

Pro srovnání tvoje verze, která načte obsah souboru do stringu:

string line = "";

using (StreamReader sr = new StreamReader(new FileStream("cesta", parametry)))
    while ((line = sr.ReadToEnd()) != null)
        text += Enfironment.NewLine + line;

a verze přes File :

String line = File.ReadAllText("cesta");
Nahoru Odpovědět 7.3.2013 11:36
:)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

Asi jsi měl na mysli

String text = File.ReadAllText("cesta");
Nahoru Odpovědět 7.3.2013 11:46
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
matesax:

Co asi řeší navíc, když je to FileStream? Musíš to ručně uzavřít...

 
Nahoru Odpovědět 7.3.2013 12:02
Avatar
Veganekk
Člen
Avatar
Veganekk:

Pri vlozeni toho kodu co napsal satik to pise toto

Chyba   3       Název 'Enfironment' v aktuálním kontextu neexistuje  c:\users\tsuna\documents\visual studio 2012\Projects\ZAPISDOSOUBORUACETNI(sam,slovpocet,...)\ZAPISDOSOUBORUACETNI(sam,slovpocet,...)\Form1.cs   118     22      ZAPISDOSOUBORUACETNI(sam,slovpocet,...)
[\code]

Mám dalsi problem. Pri zmacknuti buttonu tak kdyz zjistuji samohlasky pres forech tak se mi to furt zvysuje o ten pocet co to spocitalo poprve( Takze z 11 je treba 22 a pak 33 a tak se to zvysuje furt o +11). Takže pri vypisu do TEXTBOXU se mi to?
[\code]
foreach (char znak in s)
            {

                if (samohlasky.Contains(znak))
                {
                    pocetsamohlasek++;
                }
            }
Nahoru Odpovědět 7.3.2013 12:07
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Proč by to měl ručně zavírat? File.ReadAllText() soubor otevře, přečte a zavře.

Nahoru Odpovědět 7.3.2013 12:08
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Veganekk
Kit:

Skutečně jsi to pojmenoval 'Enfironment'?

Nahoru Odpovědět 7.3.2013 12:10
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Veganekk
Luboš Běhounek (Satik):

Máš tam chybku, má být Environment.

Jestli to dobře chápu, tak nenuluješ tu proměnnou pocetsamohlasek před tím počítáním, takže ti tam zůstává hodnota od minulého počítání.

Nahoru Odpovědět 7.3.2013 12:31
:)
Avatar
Odpovídá na matesax
Luboš Běhounek (Satik):

File není instance třídy FileStream, ale statická třída .NETu, která poskytuje pár funkcí se soubory.
K načtení obsahu souboru pak opravdu nepotřebuješ nic víc, než ten jeden příkaz, který za tebe ten soubor otevře, načte data a zase ho zavře a uvolní, tam už není žádný kód okolo, který bys musel volat.

Editováno 7.3.2013 12:35
Nahoru Odpovědět 7.3.2013 12:34
:)
Avatar
Veganekk
Člen
Avatar
Veganekk:

Už opět jsme se ztatil . Tak co teda? Jak to ma byt dobre protoze fakticky uz nevim....

Nahoru Odpovědět 7.3.2013 22:08
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Veganekk
Člen
Avatar
Veganekk:

Myslis tento kod
Jen co je ten Enfironment ?? Jak jsem psal vyse pise mi to chybovoou hlasku ... . Je Enfironment promena nebo tak ??

string line = "";
using (StreamReader sr = new StreamReader(new FileStream("cesta", parametry)))
    while ((line = sr.ReadToEnd()) != null)
        text += Enfironment.NewLine + line;

ci tento

String line = File.ReadAllText("cesta");

Jinak dekuju za pomoc... :)

Nahoru Odpovědět 7.3.2013 23:49
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Veganekk
Člen
Avatar
Veganekk:

A jen tak pro zajímavost co je ten
Enfironment ? K cedmu to slouzi??

Nahoru Odpovědět 8.3.2013 0:13
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Odpovídá na Veganekk
Luboš Běhounek (Satik):

EnvironMent.New­Line je znak nové řádky.

Nahoru Odpovědět 8.3.2013 0:16
:)
Avatar
Veganekk
Člen
Avatar
Veganekk:

Dekuju za vysvetleni.
Jeste kdybych se mohl zeptat jak zjistim pocet pismen v txt souboru? Snazim se to zjitit pres forech jako souhlasky a samohlasky ale nejak to nejde ... Tak jestli bych mohl pozadat jeste o radu... Dekuju predem

Nahoru Odpovědět 8.3.2013 0:20
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Veganekk
Člen
Avatar
Veganekk:
String line = File.ReadAllText("odkaz");

Jak mam pocitat pocet rasku protoze tohle mi to vubec nepocita...
radkyjen vypisuje z txt ,,,,

Zkusil jsem toto na pocitani radku :

int pocetRadku = File.ReadAllLines("odkaz").Length;

ale nejde to...

Editováno 8.3.2013 0:29
Nahoru Odpovědět 8.3.2013 0:25
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Luboš Běhounek (Satik):

Už jsem ti to tu psal, najdi si příspěvek, ve kterém je kód, ve kterém je text "Pocet radku: ".

Nahoru Odpovědět  +1 8.3.2013 0:29
:)
Avatar
Veganekk
Člen
Avatar
Veganekk:

Asi radsi prepisu program do noveho reseni vypada ze je to zase nejak pokazene... Dekuju za radu SATIKU :) a tvoji ochotu mi pomoc.

Uvidime prepisu to a treba to se to rozbehne :D jako minule ten Timer.... Asi jsem nekde neco posral ... No tak diky vsem za rady :) a pomoc

Editováno 8.3.2013 0:33
Nahoru Odpovědět 8.3.2013 0:31
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
ejoty
Člen
Avatar
ejoty:

nevim tedy, jestli cteš soubor, a pak do něj chceš zapsat tak mi to kaky nešlo, po čtení je potřeba soubor zavřít aby nebyl využíván čtenářem. dej po přečtení ctenat.Close();

 
Nahoru Odpovědět 14.3.2013 15:52
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 54 zpráv z 54.