VÝUKOVÝ MATERIÁL Identifikační údaje školy 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 Číslo projektu CZ.1.07/1.5.00/34.1076 Název projektu Pro vzdělanější Šluknovsko Číslo a název šablony 32 Inovace a zkvalitnění výuky prostřednictvím ICT Autor 0207 Mgr. Bc. Jan Škoda Tematická oblast Programování Číslo a název materiálu VY_32_INOVACE_0207_0311 Visual C# - práce se soubory Anotace Žák si upevní učivo o práci se soubory v programovacím jazyce Visual C# Vytvořeno 25. 7. 2013 Určeno pro 3. ročník oboru Informační technologie Přílohy 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, Directory, Archive, Temporary, Compressed, Offline, Encrypted. 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. 2013-07-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. 2013-07-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-04866- 4.