180 likes | 387 Views
Práce S Proudy v .NET Framework aplikacích. Architektura technologie .NET Jan Martinovi č, FEI - Katedra Informatiky. File. Statické metody AppendAllText – připojení specifikovaného řetězce k souboru. Pokud soubor neexistuje, tak je vytvořen
E N D
Práce S Proudy v .NET Framework aplikacích Architektura technologie .NET Jan Martinovič, FEI - Katedra Informatiky
File • Statické metody • AppendAllText – připojení specifikovaného řetězce k souboru. Pokud soubor neexistuje, tak je vytvořen • AppendText – Otevře souboru (nebo jeho vytvoření pokud neexistuje) a jeho vrácení jako StreamWriter • Copy – kopírování existujícího souboru do nového souboru • Create – vytvoření souboru na zadané cestě a jako vracení jako FileStream • CreateText – vytvoření nebo otevření souboru pro textový zápis a jeho návrat jako StreamWriter • Move – přesun souboru na nové místo • Open – Otevření souboru a jeho vrácení jako FileStream • OpenRead – Otevření souboru pro čtení a jeho vrácení jako FileStream
File • Statické metody • OpenText – otevření existujícího textového souboru pro čtení a jeho vrácení jako StreamReader • OpenWrite – otevření existujícího souboru pro zápis a jeho vrácení jako FileStream • ReadAllBytes – otevře soubor pro binární čtení, jeho obsah zapíše do pole bytů a soubor zavře • ReadAllLines – otevře textový soubor, jeho obsah do pole řetězců a soubor zavře • ReadAllText – otevření textového souboru, jeho obsah se načte do řetězce a soubor se zavře • WriteAllBytes – vytvoří soubor pro binární zápis, zapíše do něj pole bytů a soubor zavře (pokud soubor již existuje bude přepsán) • WriteAllText – vytvoření textového souboru, zapsání do něj pole řetězců a uzavření souboru (pokud soubor již existuje bude přepsán) • WriteAllLines – vytvoření textového souboru, zapsání do něj řetězce a uzavření souboru (pokud soubor již existuje bude přepsán)
Directory • Statické metody • CreateDirectory – vytváření adresářů • Delete – smazání adresáře • Exists – test zda adresář existuje na disku • GetCreationTime – získání času vytvoření adresáře • GetCurrentDirectory – získání aktuálního pracovního adresáře • GetDirectories – získání jmen podadresářů ve specifikovaném adresáři • GetDirectoryRoot – získání informací o svazku, kořenové informace, nebo obojí ze specifikované cesty • GetFiles – získání jmen souborů ve specifikovaném adresáři
Directory • Statické metody • GetLastAccessTime – vrátí čas kdy bylo ke specifikovanému adresáři naposledy přistupováno • GetLastWriteTime – vrátí čas kdy bylo do specifikovanému adresáři naposledy zapisováno • GetLogicalDrives – získání seznam diskových jednotek na aktuálním systému dle vzoru: „<disková jednotka>:\“ • GetParent –získání rodičovského adresáře k adresáři specifikovanému • Move – přesun souboru či adresáře na specifikované místo • SetCreationTime – nastavení času vytvoření pro specifikovaný adresář • SetCurrentDirectory – nastavení adresáře, který bude využívat aplikace jako pracovní • SetLastAccessTime – nastavení času posledního přístupu pro specifikovaný adresář • SetLastWriteTime – nastavení času posledního zápisu pro specifikovaný adresář
Práce s proudy (StreamsEN) • Proudy jsou základní cestou jak pracovat s daty náhodným i sekvenčním přístupem • Proudy jsou používány v různých částech .NET Frameworku • Základem je abstraktní třída Stream
Stream • Vlastnosti • CanRead– indikace, zda proud podporuje čtení • CanSeek – indikace, zda proud podporuje prohledávání • CanTimeout – indikace, zda proud podporuje časový limit • CanWrite – indikace, zda proud podporuje zápis • Length – vrátí délku proudu v bytech • Position – získání či nastavení aktuální pozice v proudu • ReadTimeout– získání či nastavení časového limitu, po který se bude proud pokoušet číst • WriteTimeout – získání či nastavení časového limitu, po který se bude proud pokoušet zapisovat
Stream • Metody • Close – uzavření proudu a uvolnění prostředků přiřazených tomuto proudu • Flush – uvolnění vyrovnávací paměti a zápis takto uvolněných dat • Read – přečtení sekvence bytů zadané délky od aktuální pozice a přesun aktuální pozice o přečtenou délku • ReadByte – přečtení bytu z proudu a přesun o jednu pozici nebo pokud vrácení -1 pokud je na konci proudu • Seek – nastavení pozice uvnitř proudu • SetLength– nastavení délky aktuálního proudu • Write - zápis sekvence bytů zadané délky od aktuální pozice a přesun aktuální pozice o přečtenou délku • WriteByte - zápis bytu do proudu a přesun o jednu pozici
Stream • Odvozené třídy • FileStream (System.IONamespace) • MemoryStream (System.IONamespace) • CryptoStream (System.SecurityNamespace) • NetworkStream (System.NetNamespace) • GZipStream (System.CompressionNamespace)
FileAccess • Enumerátor • Read – přístup ke čtení • Write – přístup pro zápis • ReadWrite – přístup ke čtení i pro zápis
FileMode • Enumerátor • Append – otevření souboru pokud existuje a přesun na konec tohoto souboru, nebo vytvoření nového souboru • Create – bude vytvořen nový soubor – pokud soubor již existuje bude přepsán • CreateNew – bude vytvořen nový soubor – pokud soubor existuje dojde k výjimce • Open – otevření souboru – pokud soubor neexistuje dojde k výjimce • OpenOrCreate – otevření souboru – pokud soubor neexistuje bude vytvořen nový • Truncate – otevření existujícího souboru a oříznutí jeho velikosti na 0 bytů
FileStream • Odvozený od třídy Stream • Vlastnosti • Handle – získání ukazatele operačního systému na soubor, který FileStream zapouzdřuje • Name – získání jména, které bylo zadáno v konstruktoruFileStream • Metody • Lock – zakázání ostatním procesům měnit FileStream – povolení pouze čtení • Unlock – povolení ostatním procesům měnit FileStream – povolení pouze čtení
StreamWriter • Odvozený od třídy TextWriter • Vlastnosti • AutoFlush – získání či nastavení informace o tom zda proud bude zapisovat jeho vyrovnávací paměť po každém volání StreamWriter.Write • BaseStream – získání připojeného proudu • Encoding – získání kódování, ve kterém se bude zapisovat • NewLine – získání nebo nastavení řetězce, kterým budou ukončovány jednotlivé řádky • Metody • Close – uzavření proudu a proudu s ním spojeného • Write – zápis do proudu • WriteLine – zápis dat dle specifikace parametry a ukončení řádku ukončovacím řetězcem
Jak zapisovat do textových souborů • stringfileName = "MujSoubor.txt"; • if (File.Exists(fileName)) • { • Console.WriteLine("Soubor {0} již existuje.", fileName); • return; • } • using (StreamWritersw = File.CreateText(fileName)) • { • sw.WriteLine("Toto je testovací soubor."); • sw.WriteLine("Dnes je: {0}", DateTime.Now); • }
Jak zapisovat do binárních souborů • stringfileName = "Test.data"; • if (File.Exists(fileName)) • { • File.Delete(fileName); • } • using (FileStreamfs = new FileStream(fileName, FileMode.CreateNew)) • { • using (BinaryWriter w = new BinaryWriter(fs)) • { • for (int i = 0; i < 11; i++) • { • w.Write(i); • } • } • }
StreamReader • Odvozený od TextReader • Vlastnosti • BaseStream – získání připojeného proudu • CurrentEncoding – získání kódování, která aktuální StreamReader používá • EndOfStream – indikace zda je aktuální pozice v proudu na konci proudu • Metody • Close – uzavření proudu a uvolnění prostředků přiřazených tomuto proudu • Peek – vrátí další dostupný znak, ale neposune pozici v proudu • Read – přečte následující znak nebo další množinu znaků ze vstupního proudu • ReadBlock – přečte maximum možných znaků zadaných parametrem count a zapíše je do buffer(char[]) – zápis bude probíhat od pozice index • ReadLine –přečte řádek znaků z aktuálního proudu a vrátí ho jako řetězec • ReadToEnd – přečte proud od aktuální pozice do konce a vrátí jako řetězec
Jak číst z textových souborů • stringfileName = "MujSoubor.txt"; • if (!File.Exists(fileName)) • { • Console.WriteLine("Soubor {0} neexistuje.", fileName); • return; • } • using (StreamReadersr = File.OpenText(fileName)) • { • String input; • while ((input = sr.ReadLine()) != null) • { • Console.WriteLine(input); • } • Console.WriteLine("Byl dosažen konec souboru."); • }
Jak číst z binárních souborů • stringfileName = "Test.data"; • if (!File.Exists(fileName)) • { • Console.WriteLine("Soubor {0} neexistuje.", fileName); • } • using (FileStreamfs = new FileStream(fileName, FileMode.Open, FileAccess.Read)) • { • using (BinaryReader r = new BinaryReader(fs)) • { • for (int i = 0; i < 11; i++) • { • Console.WriteLine(r.ReadInt32()); • } • } • }