Čítanie z textového súboru – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Čítanie z textového súboru – .NET – Fórum – Programujte.comČítanie z textového súboru – .NET – Fórum – Programujte.com

 

zonda0
Stálý člen
8. 7. 2008   #1
-
0
-

Chcel by som vedieť ako sa dá naprogramovať to že napr.: zadáš príkaz aby do textboxu napísal prvý riadok z textového súboru (subor.txt) . A ešte ako sa dá že zadáte iba adresár a on vám zo všetkých suborov s koncovkou .txt vypíše prvý riadok do listboxu .
Stačí aj neaký link ktorý bude niečo okolo toho :P

Dík fest .
P.S: hľadal som to na googli ale neviem aké správne kľúčové slovo k tomu použiť :(

Nahlásit jako SPAM
IP: 78.99.40.–
Všetko by malo byt urobene tak jednoducho ako je možne ale nie jednoducho :) .Albert Einstein [br] ----------------------------------------- [br] Ak nájdete chyby v text tak sorri :P.
Chrasty
~ Redaktor
+4
Posthunter
Nahlásit jako SPAM
IP: 193.179.196.–
zonda0
Stálý člen
8. 7. 2008   #3
-
0
-

dík za link ale ešte jedno vec ako do toho mám dať aby mi prečítalo !iba! štvrty riadaok z toho textu ?

Nahlásit jako SPAM
IP: 78.99.40.–
Všetko by malo byt urobene tak jednoducho ako je možne ale nie jednoducho :) .Albert Einstein [br] ----------------------------------------- [br] Ak nájdete chyby v text tak sorri :P.
8. 7. 2008   #4
-
0
-
Nahlásit jako SPAM
IP: 84.21.124.–
Dušan Janošík | web: djanosik.cz, @djanosik
zonda0
Stálý člen
8. 7. 2008   #5
-
0
-

No pozrel som všetko čo bolo na googli ale nenašiel som žeby niekde bolo čítanie pre niektorý riadok samostatne všetky boli iba pre čítanie celého textu .
Prosím porad veim že to má byť napísané niekde tu ale neviem čo tam má byť napísané .

try

{
using (StreamReader sr = new StreamReader("C://TestFile.txt"))
{
string line;
while ((line = sr.ReadLine()) != null)
// tu by podľa mna malo niečo byť aby bol neaký riadok
// dal som (line = sr.ReadLine()) != 2 ale nejde to !
{
comboBox1.Text = line;
}
}
}
catch (Exception e)
{

Console.WriteLine("The file could not be read:");
Console.WriteLine(e.Message);
}

Nahlásit jako SPAM
IP: 78.99.40.–
Všetko by malo byt urobene tak jednoducho ako je možne ale nie jednoducho :) .Albert Einstein [br] ----------------------------------------- [br] Ak nájdete chyby v text tak sorri :P.
8. 7. 2008   #6
-
0
-

Musíš u toho taky trochu přemejšlet a ne jen opisovat, co kde najdeš.

try 

{
using (StreamReader sr = new StreamReader("C://TestFile.txt"))
{
string line;
int index = 0;
while ((line = sr.ReadLine()) != null)
{
if(index == 4)
{
comboBox1.Text = line;
}
index++;
}
}
}
catch (Exception e)
{
Console.WriteLine("The file could not be read:");
Console.WriteLine(e.Message);
}

Nahlásit jako SPAM
IP: 84.21.124.–
Dušan Janošík | web: djanosik.cz, @djanosik
mnn
~ Anonymní uživatel
118 příspěvků
8. 7. 2008   #7
-
0
-

djanosik: pochybujem ze takto sa nieco nauci. Naco mu hned skakat na subory, ked nema zakladne vedomosti o programovani (tj programatorske myslenie)

Nahlásit jako SPAM
IP: 78.98.45.–
8. 7. 2008   #8
-
0
-

To mnn : takových lidí je dnes většina

Nahlásit jako SPAM
IP: 84.21.124.–
Dušan Janošík | web: djanosik.cz, @djanosik
zonda0
Stálý člen
9. 7. 2008   #9
-
0
-

ee naopak ja sa pritom učím tiež lebo to vidím v praxi . A to treba tiež .

Nahlásit jako SPAM
IP: 78.99.40.–
Všetko by malo byt urobene tak jednoducho ako je možne ale nie jednoducho :) .Albert Einstein [br] ----------------------------------------- [br] Ak nájdete chyby v text tak sorri :P.
9. 7. 2008   #10
-
0
-

To zonda : Jo, praxe tě naučí hodně, ale bez teoretických základů to nejde. Když máš teoretický základy, tak pro tebe v praxi nebude problém vymyslet vlastní řešení (i když ne vždy), které ti dá mnohem víc než to, co ti někdo v diskuzi napíše.

Nahlásit jako SPAM
IP: 84.21.124.–
Dušan Janošík | web: djanosik.cz, @djanosik
mylan40
Super člen
9. 7. 2008   #11
-
0
-

To djanosik : IMHO by bolo dobré to čítanie na 4. riadku zastaviť, teraz sa vlastne zbytok súboru (po 4. riadku) načíta zbytočne.

Nahlásit jako SPAM
IP: 85.248.56.–
velurex0
Stálý člen
9. 7. 2008   #12
-
0
-

Na Dušanovu obranu musím poznamenat, že se jednalo jen o "nakopnutí", ne hotové řešení (ostatně ten program čte pátý a ne čtvrtý řádek:) Ono by bylo vůbec dobré něco si přečíst o třídách .NETu, které manipulují se soubory - jiné jsou vhodné pro práci s textovými soubory, jiné pro obecné binární a ještě jiné pro binární se známou strukturou dat.

Nahlásit jako SPAM
IP: 213.191.119.–
9. 7. 2008   #13
-
0
-

Ano, šlo jen o nakopnutí. Nepřemýšlel jsem nad tím, co tam píšu - to sice není nejlepší přístup, ale v tu dobu mi to bylo jedno.

BTW: Já nevim, jestli přečtením pátého řádku veškerá práce končí.

Nahlásit jako SPAM
IP: 84.21.124.–
Dušan Janošík | web: djanosik.cz, @djanosik
Wideman
~ Anonymní uživatel
7 příspěvků
9. 7. 2008   #14
-
0
-

Pokud to nejsou nějaké gigantické soubory, kde se vyplatí používat StreamReader, bych pro začátečníka doporučil spíš tento postup:

string line = System.IO.File.ReadAllLines ("C://File.txt")[0];
plus ošetření výjimek. To čtení z adresáře bych udělal nějak takto:
foreach (string fileName in System.IO.Directory.GetFiles ("C://Directory"))

{
string line = System.IO.File.ReadAllLines (fileName)[0];
// zpracovat radku
}
Když si prohlídneš metodu GetFiles, tak najdeš možnost filtrovat vyhledané soubory - jen txt jak jsi chtěl a další optiony, které upravují způsob výběru. To jsem ale do příkladu nezahrnul, protože se mi to nechtělo zkoušet.

Nahlásit jako SPAM
IP: 213.29.196.–
9. 7. 2008   #15
-
0
-

To Wideman : Funguje tam totéž, co při vyhledávání ve Windows. Tj. třeba název souboru "k?t*.txt" může znamenat "kytara.txt", ale už ne "kravata.txt".

Mezi použitím System.IO.File.ReadAllLines a přímým použitím StreamReaderu není až takovej rozdíl, protože logika této metody vypadá nějak takhle:

public static string[] ReadAllLines(string path)

{
ArrayList list = new ArrayList();
using (StreamReader reader = new StreamReader(path, encoding))
{
string str;
while ((str = reader.ReadLine()) != null)
{
list.Add(str);
}
}
return (string[])list.ToArray(typeof(string));
}

Nahlásit jako SPAM
IP: 84.21.124.–
Dušan Janošík | web: djanosik.cz, @djanosik
zonda0
Stálý člen
9. 7. 2008   #16
-
0
-

dík fest za radi . JA viem že mám trochu medzeri .
A ešte mám jednu otázočko k tomu čítaniu :
Aké kľučové slovo by ste použili ak chcete aby prečítalo všetky subori v danom adresáte s koncovkov .txt ?
Napr na disku C mám 6 txt suborov .Aké kľučové slovo mám použiť aby mi vypísalo všetky texti z tých 6 txt suborov ?

Nahlásit jako SPAM
IP: 78.99.40.–
Všetko by malo byt urobene tak jednoducho ako je možne ale nie jednoducho :) .Albert Einstein [br] ----------------------------------------- [br] Ak nájdete chyby v text tak sorri :P.
paul270
Návštěvník
9. 7. 2008   #17
-
0
-

zonda napsal:
dík fest za radi . JA viem že mám trochu medzeri .
A ešte mám jednu otázočko k tomu čítaniu :
Aké kľučové slovo by ste použili ak chcete aby prečítalo všetky subori v danom adresáte s koncovkov .txt ?
Napr na disku C mám 6 txt suborov .Aké kľučové slovo mám použiť aby mi vypísalo všetky texti z tých 6 txt suborov ?


Nejdřív bych zjistil, kolik .txt souborů je v daném adresáři a pak jejich obsah postupně vypisoval. IMOH na tom není nic těžkého a otázku s klíčovým slovem jsem moc nepochopil.

Nahlásit jako SPAM
IP: 88.103.71.–
9. 7. 2008   #18
-
0
-

To zonda : Vzhledem k tomu, co jsem napsal by ti mohlo dojít, že to bude "*.txt".

Nahlásit jako SPAM
IP: 84.21.124.–
Dušan Janošík | web: djanosik.cz, @djanosik
zonda0
Stálý člen
9. 7. 2008   #19
-
0
-

new StreamReader("C://*.txt") 

mám napísane ale nejde to .
A neviem či si to tak myslel ? s tou * ?
Napísal : paul27
Nejdřív bych zjistil, kolik .txt souborů je v daném adresáři a pak jejich obsah postupně vypisoval. IMOH na tom není nic těžkého a otázku s klíčovým slovem jsem moc nepochopil.

Ale ja neviem koľko ich tam bude preto sa pýtam lebo ja chcem iba pre hociaký počet s hociakým názvom aby ale iba s určitou koncovkov čiže .txt

Nahlásit jako SPAM
IP: 78.99.40.–
Všetko by malo byt urobene tak jednoducho ako je možne ale nie jednoducho :) .Albert Einstein [br] ----------------------------------------- [br] Ak nájdete chyby v text tak sorri :P.
9. 7. 2008   #20
-
0
-

To zonda : Takže ty u toho prostě nebudeš přemejšlet.

foreach (string fileName in System.IO.Directory.GetFiles ("C://Directory", "*.txt")) 

{
string line = System.IO.File.ReadAllLines (fileName)[3];
// zpracovat radku
}


Nahlásit jako SPAM
IP: 84.21.124.–
Dušan Janošík | web: djanosik.cz, @djanosik
zonda0
Stálý člen
9. 7. 2008   #21
-
0
-

Toto tvoje nejde píše chybu v tomto ("C://Directory", "*.txt")
Tak so pozrel niečo viac na googli o GetFiles . z toho čo som vičítal som si poskladal toto :



DirectoryInfo disk = new DirectoryInfo("C://");
FileInfo[] filter = disk.GetFiles("*.txt");

foreach (FileInfo nazov in filter)
Console.WriteLine(nazov);

Toto mi nevypíše nič z toho čo je v subore ale vypíše iba názovsuboru s koncovkou txt .
nevieš toto ešte tak premeniť aby mi to čítalo čo je dnu ?? tie riadky s tačí iba prvý ked tak už .
Ak ee tak aj tak dík . A dík všetkým čo sa zapojili do tejto diskusií .

Nahlásit jako SPAM
IP: 78.99.40.–
Všetko by malo byt urobene tak jednoducho ako je možne ale nie jednoducho :) .Albert Einstein [br] ----------------------------------------- [br] Ak nájdete chyby v text tak sorri :P.
9. 7. 2008   #22
-
0
-

Konec, na tohle já nemám energii.

Nahlásit jako SPAM
IP: 84.21.124.–
Dušan Janošík | web: djanosik.cz, @djanosik
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý