Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilBohumila Vaňková
1
Úvod do programování 8. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015
2
Jan LánskýÚvod do programování 8. hodina2 Umíme z minulé hodiny Algoritmy Hornerovo schéma Převod mezi číselnými soustavami Dlouhá celá čísla (reprezentace) Součet, rozdíl, součin, podíl Dlouhá reálná čísla (reprezentace) Zlomky (reprezentace) Syntax Konstanty
3
Jan LánskýÚvod do programování 8. hodina3 Cíle hodiny Soubory Textové (= textový režim přístupu) StreamReader, StreamWriter Binární (= binární režim přístupu) BinaryReader, BinaryWriter Syntax Čtení ze souboru a zápis do souboru Správa souborového systému Directory, File, Path, FileInfo
4
Jan LánskýÚvod do programování 8. hodina4 Přístup na disk Přístup na disk je o mnoho řádů pomalejší než přístup do operační paměti Disk jednotky milisekund, operační paměť desítky nanosekund (5 řádů) Zápis / čtení neprobíhá po bytech, ale po blocích Rozhraní programovacího jazyka umožňuje práci po jednotlivých bytech Buffrování (kompilátor), disková cashe Když v programu zapíšu data na disk, fyzicky se zapíší až později Práce se sousedními daty časově méně náročná než práce s daty různých částí souborů Nepoužívat disk jako dočasné úložiště dat, která se vejdou do operační paměti
5
Jan LánskýÚvod do programování 8. hodina5 Práce se soubory 1. krok - Otevření souboru se zadaným jménem a režimem (čtení, zápis) Automatická kontrola existence, přístupových práv Pokud se soubor nepodaří otevřít vyvolá se chyba 2. krok - Čtení / zápis 3. krok - Zavření souboru OS umožňuje mít otevřený omezený počet souboru (řádově stovky) Při uzavření souboru se na disk zapíší obsahy bufferu na disk Pokud ukončíme program bez zápisu souboru na disk, ztratíme data z bufferu Dokud soubor nezavřeme, blokujeme ho ostatním using System.IO; Pravé tlačítko myši na podtržený idenfikátor Resolve
6
Jan LánskýÚvod do programování 8. hodina6 Textové vs. Binární soubory Textové Lidsky čitelný zápis Obsah dělen na řádky *.txt, *.html, *.xml Binární Lidsky nečitelné Hodnoty ve stejném tvaru jako uloženy v paměti Význam dat závisí na našem rozhodnutí *.exe, *.doc
7
Jan LánskýÚvod do programování 8. hodina7 Textové soubory čtení StreamReader – otevření pro čtení new StreamReader(@"cesta k souboru") string s = @"cesta"; new StreamReader(cesta) Read() – znak Read(pole, start, pocet) – pole znaků ReadLine() – řádka ReadToEnd() – do konce souboru Peak() – podíváme se následující znak, ale zůstane nepřečtený Close() – uzavření souboru Konec souboru -1 Konec souboru null Vrací počet přečtených znaků. Konec souboru je 0 Soubory se musí zavírat
8
Jan LánskýÚvod do programování 8. hodina8 Cesta k souborům @ "retezec" Nepokusí se interpretovat znaky jako řídící znaky formátovacího řetězce Př.: @"..\novy" nebude odřádkovávat ("\n") Název souboru bez cesty Př.: @"soubor.txt", Najdeme v..\Solution\Projekt\bin\Debug\ Absolutní cesta: Př.: @"C:\data\tmp\a.txt" Relativní cesta: Př.: @"..\..\a.txt" @ (alt + 64) Formálně se nazývá "parametr kompilátoru @"
9
Jan LánskýÚvod do programování 8. hodina9 StreamReader Práce se soubory Dokud jsou v souboru řádky Zavřeme soubor Otevřeme pro čtení soubor se zadanou cestou Přečteme soubor po řádcích a vypíšeme ho obrazovku Cyklus lze nahradit přečtením celého souboru najednou Soubor se musí vejít do paměti
10
Jan LánskýÚvod do programování 8. hodina10 Textové soubory: ukázka Konec řádku Windows dva symboly 0A, 0D. Jiné OS jinak Textové zobrazení Binární zobrazení
11
Jan LánskýÚvod do programování 8. hodina11 Textové soubory zápis StreamWriter – Otevření pro zápis new StreamWriter(@"cesta k souboru") Připojení na konec souboru: new StreamWriter(@"cesta k souboru", true) Write() – cokoliv (17 verzí) Write(pole, start, pocet) – pole znaků WriteLine() – jako Write + odřádkuje Flush() – zápis bufferů do souboru Close() – uzavření souboru Existující soubor přepíše Soubory se musí zavírat
12
Jan LánskýÚvod do programování 8. hodina12 StreamWriter Přečteme soubor po řádcích vypíšeme ho jiného souboru Otevřeme pro zápis Počet řádků Každých 1000 řádků budeme mít jistotu, že se data skutečně zapsala do souboru. Pojistka pro pád programu, zde není nutná Flush úplně každého řádku by dost zpomaloval Zavřeme oba soubory
13
Jan LánskýÚvod do programování 8. hodina13 Zápis pole Přečteme soubor po znacích a do dalšího souboru vypíšeme slova délky 5 a více. Každé slovo na novém řádku. Načteme 1 znak, později musíme přetypovat na char. Konec souboru -1 Doufáme, že slova jsou kratší než 100, jinak chyba Do souboru vypíšeme část pole, od indexu 0 do indexu 0 + delka - 1 Začneme nové slovo Slovo je souvislá posloupnost písmen
14
Jan LánskýÚvod do programování 8. hodina14 FileStream new FileStream (@"cesta", FileMode) Obecné otevření souboru - nutné pro otevření souboru v binárním režimu FileMode – výčtový typ Open – Otevře existující soubor na začátku Append – Otevře existující soubor na konci Create – Vytvoří nový soubor Open vhodný pro čtení Create vhodný pro zápis Append vhodný pro zápis formou logování Soubor v Textovém režimu šel otevírat přímo
15
Jan LánskýÚvod do programování 8. hodina15 Binární soubory BinaryWriter – zápis new BinaryWriter(FileStream) Write() – 18 verzí pro různé datové typy BinaryReader – čtení new BinaryReader(FileStream) ReadInt32(), ReadString(), … 15 verzí Close() – uzavření souboru Musíme načítat datové typy v odpovídajícím pořadí v jakém byly zapisovány. Jinak vzniknou nesmysly. Soubory se musí zavírat
16
Jan LánskýÚvod do programování 8. hodina16 Binární soubory ukázka Binární zobrazení Textové zobrazení Je nesmysl (zalomení řádek)
17
Jan LánskýÚvod do programování 8. hodina17 BinaryWriter Otevřeme binární soubor pro zápis Musíme uložit i délku pole Pro každý prvek pole uložíme hodnoty všech datových položek Zavřeme soubor
18
Jan LánskýÚvod do programování 8. hodina18 BinaryReader Otevřeme binární soubor pro čtení Načteme délku pole Pro každý prvek pole musíme znát datové typy položek a pořadí v jakém jsme položky ukládali Zavřeme soubor
19
Jan LánskýÚvod do programování 8. hodina19 Seek FileStream.Seek (posun, SeekOrgin) Nastavení se na konkrétní pozici v souboru (obdoba přístupu k prvku pole pomocí indexu) Má smysl jen pro binární soubory, které neobsahují řetězce proměnlivé délky (string) SeekOrgin Begin – posun se počítá od začátku souboru End – posun se počítá od konce souboru Seek(-1, SeekOrgin.End) – posun na poslední platný znak Current – posun se počítá od aktuální pozice Seek(-1, SeekOrgin.Current) – posun o jeden znak zpět Zamestnanec jmeno udělá Seek nepoužitelný Textové soubory, konce řádku dva znaky 0D, 0A, nelze rozumně použít
20
Jan LánskýÚvod do programování 8. hodina20 Seek: příklad Ze souboru obsahujícího pouze 32bitová čísla načteme číslo se zadaným pořadím V souboru se nastavíme na místo, které obsahuje číslo, které chceme přečíst. Velikost datového typu * pořadí Vytvoříme BinaryReader, který začíná číst na pozici, na které jsme nastaveni Zavřeme soubor Přečteme číslo
21
Jan LánskýÚvod do programování 8. hodina21 Správa souborového systému Directory Zpřístupňuje funkce pro správu adresářů CreateDirectory, Move, Delete GetFiles, GetDirectories, GetParent File Zpřístupňuje funkce pro správu adresářů Delete, Copy, Move, SetAttributes, GetAttributes FileInfo Length, Name, FullName Path GetFullPath, GetFileName, GetExtension Length velikost souboru, nezjistím z File Podobné FileInfo, ale nemusíme vytvářet proměnnou
22
Jan LánskýÚvod do programování 8. hodina22 Příklad: Kopie souborů Návratová hodnota: Pole řetězců se jmény souborů Projdeme soubory Jméno souboru změníme, aby bylo v adresáři zaloha Okopírujeme soubor do zaloha true přepisovat existující soubory Vytvoříme adresář 2 rozměrná pole budou příští hodinu GetFileName Jméno souboru bez adresářů Informace o aktuálním souboru Výpis názvu souboru a délky
23
Jan LánskýÚvod do programování 8. hodina23 Příklad: Smazání souborů Pokračování z minulého slajdu Smažeme adresář Projdeme okopírované soubory Absolutní cesty k souborům vypíšeme na obrazovku Soubor smažeme
24
Jan LánskýÚvod do programování 8. hodina24 Zpětná vazba Objevili jste ve slajdech chyby? Včetně pravopisných Nechápete nějaký slajd? Je příliš obtížný, nesrozumitelný? Máte nějaký nápad na vylepšení? Anonymní formulář Odeslání za pár vteřin http://goo.gl/forms/WxkZqBsZLs
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.