VÝUKOVÝ MATERIÁL Identifikační údaje školy
Číslo projektu Název projektu Číslo a název šablony Autor Tematická oblast Číslo a název materiálu Anotace Vytvořeno Určeno pro Přílohy
Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 CZ.1.07/1.5.00/34.1076 Pro vzdělanější Šluknovsko 32 – Inovace a zkvalitnění výuky prostřednictvím ICT 0207 Mgr. Bc. Jan Škoda Programování VY_32_INOVACE_0207_0311 Visual C# - práce se soubory Žák si upevní učivo o práci se soubory v programovacím jazyce Visual C# 25. 7. 2013 3. ročník oboru Informační technologie Bez příloh
Metodický list • Učitel: • Výklad s projekcí elektronického učebního materiálu. • Ukázka obecného postupu činností. • Monitorování činnosti žáků.
• Žák: • Sleduje výkladovou projekci a demonstraci učitele. • Procvičuje.
Visual C# Práce se soubory
Textové soubory • Obecně můžeme ukládat data naší aplikace následujícím způsobem: • • • •
Textové soubory s jednoduchou strukturou (např. .txt a .csv). Textové soubory s vnitřní hierarchií (např. .xml nebo .json). Soubory binárního typu (jednoduše otisk paměti do souboru). Databáze.
• Nejjednodušší cestou, jak uložit data aplikace na pevný disk, je využít textové soubory. • Text je v nich uložen jednoduše na jednotlivých řádcích. • K oddělení řádků se využívá speciálních znak.
Zápis textu do nového souboru • K zápisu do textových souborů .NET poskytuje třídu StreamWriter. • Ve zdrojovém kódu musím do using přidat System.IO. • Vytvoříme blok using a založíme v něm novou instanci StreamWriter. • Using se nám automaticky postará o zavření souboru po dokončení zápisu/čtení. • Do konstruktoru zapíšeme cestu k našemu souboru: using (StreamWriter sw = new StreamWriter(@"soubor.txt")) { }
Zápis textu do nového souboru • Nový řádek zapíšeme pomocí metody WriteLine. • Po dokončení zápisu musíme zavolat metodu Flush, která se stará o vyprázdnění bufferu. • Příklad: using (StreamWriter MujSoubor = new StreamWriter(@"soubor.txt"))
{
MujSoubor.WriteLine("První řádek"); MujSoubor.WriteLine("Druhý řádek"); MujSoubor.WriteLine("Třetí řádek"); MujSoubor.Flush(); } • Po spuštění se vytvoří soubor.txt ve složce s naším projektem, přesněji v bin/debug.
Připsání textu do existujícího souboru • Pokud soubor neexistuje, kód výše ho vytvoří. • Pokud existuje, bude přepsán. • Toto chování můžeme změnit pomocí druhého parametru konstruktoru objektu StreamWriter. • Pokud ho nastavíme na true, provede se tzv. append (připsání). using (StreamWriter sw = new StreamWriter(@"soubor.txt", true))
{ sw.WriteLine("Další řádek"); sw.Flush(); }
Načtení existujícího souboru • K načtení dat z textových souborů .NET poskytuje třídu StreamReader. • Použití je obdobné, namísto metody WriteLine použijeme ReadLine. • Metoda ReadLine vrací řádek textu ze souboru a zároveň se přesune na řádek následující. • Budeme ji tedy volat ve while cyklu (neznáme přesný počet opakování). • Podmínka pro ošetření konce souboru je komplikovanější: • Kontrolujeme, zda proběhlo přiřazení nové řádky do proměnné.
Načtení existujícího souboru • Příklad: using (StreamReader NactiSoubor = new StreamReader(@"soubor.txt"))
{ string s; while ((s = NactiSoubor.ReadLine()) != null) { Console.WriteLine(s); } }
Práce se soubory a složkami • Třída File na sobě obsahuje statické metody pro obecnou práci se soubory. • Se soubory můžeme jednoduše manipulovat: • Exists("soubor") - Vrací true, pokud zadaný soubor existuje. • Copy("zdroj", "cil") - Zkopíruje soubor ze zdrojového umístění na cílové. • Move("zdroj", "cil") - Přesune daný soubor na cílové umístění. • Delete("soubor") - Vymaže daný soubor.
Práce se soubory a složkami • GetAttributes("soubor") - Vrací flagový typ FileAttributes s následujícími flagy: • Normal, ReadOnly, Hidden, System, Compressed, Offline, Encrypted.
Directory,
Archive, Temporary,
• SetAttributes("soubor", FileAttributes) - Nastaví danému souboru dané atributy. • GetCreationTime("soubor") - Vrátí datum a čas vytvoření. • GetLastAccessTime("soubor") - Vrátí datum a čas posledního přístupu. • GetLastWriteTime("soubor") - Vrátí datum a čas poslední změny.
• SetCreationTime("soubor", DateTime) - Nastaví datum a čas vytvoření. • SetLastAccessTime("soubor", DateTime) - Nastaví datum a čas posledního přístupu. • SetLastWriteTime("soubor", DateTime) - Nastaví datum a čas poslední změny.
Práce se soubory a složkami • Directory je obdoba třídy File, avšak uzpůsobená pro složky. • Metody jsou následující: • CreateDirectory("slozka") - Vytvoří danou složku. • Delete("slozka") - Vymaže danou prázdnou složku. • Pokud zadáme 2. parametr typu bool s hodnotou true, vymaže složku včetně souborů a podsložek. • Exists("slozka") - Vrací true, pokud daná složka existuje.
Práce se soubory a složkami • GetLogicalDrives() - Vrátí do stringového pole logické disky ve formátu např "C:\". • GetParent("slozka") - Vrátí nadřazenou složku. • Move("zdroj", "cil") - Přesune složku do cílového umístění. • GetDirectoryRoot("slozka") - Vrátí kořen dané složky.
Práce se soubory a složkami • Path je statická třída, poskytující funkcionalitu a nastavení pro práci s cestami ke složkám či souborům. • Metody jsou následující: • ChangeExtension("cesta", "přípona") - Vrátí cestu se změnenou příponou souboru. • Combine(pole stringů) - Spojí stringy v předaném poli do cesty a tu vrátí. Metoda má další dvě přetížení, kde místo pole bere v parametrech 2 nebo 3 stringy. • GetDirectoryName("cesta") - Vrací nadřazenou složku společně s celou cestou. • GetExtension("cesta") - Vrátí příponu souboru. • GetFileName("cesta") - Vrátí jméno souboru. • GetFileNameWithoutExtension("cesta") - Vrátí jméno souboru bez přípony. • GetFullPath("cesta") - Vrátí absolutní cestu ze zadané cesty (např. z relativní).
Práce se soubory a složkami • GetInvalidFileNameChars() - Vrací pole znaků, které se nesmějí nacházet v názvu souboru. • GetInvalidPathChars() - Vrací pole znaků, které se nesmějí nacházet v cestě. • GetPathRoot("cesta") - Vrací kořenovou složku dané cesty. • GetRandomFileName() - Vrátí unikátní string, který může být použit jako název souboru. • GetTempFileName() - Vytvoří nový dočasný soubor na disku a vrátí k němu cestu. • GetTempPath() - Vrátí cestu ke složce s dočasnými soubory daného uživatele. • HasExtension("cesta") - Vrátí true, pokud má daný soubor příponu. • IsPathRooted("cesta") - Vrátí true, pokud v sobě cesta obsahuje kořen.
Zdroje • 3. díl - Práce s textovými soubory v C#. Devbook.cz - Programátorská sociální síť a materiálová základna pro C#, Java, PHP, HTML, CSS, JavaScript a [online]. 2012 [cit. 201307-23]. Dostupné z: http://www.devbook.cz/c-sharp-tutorial-prace-se-soubory-txt. • 11. díl - Práce se soubory a složkami v C# .NET. Devbook.cz - Programátorská sociální síť a materiálová základna pro C#, Java, PHP, HTML, CSS, JavaScript a [online]. 2012 [cit. 201307-23]. Dostupné z: http://www.devbook.cz/c-sharp-tutorial-prace-se-soubory-a-slozkamiv-net. • BĚHÁLEK, Marek. Programovací jazyk C# [online]. 2007, 134 s. [cit. 2013-07-23]. Dostupné z: http://www.cs.vsb.cz/behalek/vyuka/pcsharp/text.pdf. • PEŇAŠKA, Jaroslav. Malý úvod do programování v .NET C# [online]. 2006, 64 s. Dostupné z: http://physics.ujep.cz/~jkrejci/vyuka/prg2/MalyUvodDoCsharp.pdf. • Projekty SIPVZ Gymnázia Olomouc-Hejčín 2005/2006. KOVÁŘ, Dušan. Programování se zaměřením na .NET a jazyk C#: Programovací jazyk C# [online]. 2006 [cit. 2013-07-23]. Dostupné z: http://projektysipvz.gytool.cz/ ProjektySIPVZ/Default.aspx?uid=3. • PUŠ, Petr. Poznáváme C# a Microsoft .NET. In: O počítačích, IT a internetu - Živě.cz [online]. 2004 [cit. 2013-07-23]. Dostupné z: http://possitive.wz.cz/ files/Poznavame_CSharp.pdf. • ŠÍMA, František a David VILÍMEK. Microsoft Visual Studio .NET: praktické programování krok za krokem. 1. vyd. Praha: Grada, 2006, 254 s. Průvodce (Grada). ISBN 80-247-1418-3. • VIRIUS, Miroslav. C# pro zelenáče. Praha: Neocortex, 2002, 255 s. ISBN 80-863-3011-7. • VIRIUS, Miroslav. Programování pro .NET. Praha: ČVUT, 2011, 260 s. ISBN 978-80-01-048664.