Lekce 14: Práce s daty – Souborové operace a serializace v C#

Lekce 14: Práce s daty – Souborové operace a serializace v C#

V moderních aplikacích je práce s daty jednou z nejdůležitějších funkcí. Data často ukládáme a čteme ze souborů, což zahrnuje operace, jako je vytváření, čtení, zápis nebo mazání souborů. Serializace je dalším klíčovým konceptem, který umožňuje převést objekty do formátu, který lze snadno uložit do souboru nebo přenést po síti. V této lekci se podíváme na základní techniky práce se soubory a serializace v jazyce C#.


1. Práce se soubory v C#

C# poskytuje sadu tříd v rámci prostoru jmen System.IO, které usnadňují práci se soubory a adresáři. Nejčastěji používané třídy zahrnují:

  • File: Nabízí statické metody pro manipulaci se soubory (čtení, zápis, mazání atd.).
  • FileInfo: Umožňuje pracovat s atributy souborů a poskytuje instanční metody pro práci se soubory.
  • StreamReader a StreamWriter: Umožňují čtení a zápis textových souborů.
  • BinaryReader a BinaryWriter: Slouží k práci s binárními daty.

Vytvoření a zápis do souboru pomocí třídy File

Třída File poskytuje jednoduché metody, jako je WriteAllText a AppendAllText, které umožňují rychle zapisovat data do textového souboru.

Příklad:

using System.IO;

class Program
{
static void Main()
{
string cesta = "data.txt";
string obsah = "Toto je první řádek textu.";

// Zápis do souboru
File.WriteAllText(cesta, obsah);
Console.WriteLine("Soubor byl vytvořen a text byl zapsán.");
}
}

Výstup: Pokud spustíte tento kód, vytvoří se soubor data.txt s obsahem „Toto je první řádek textu.“


Čtení obsahu souboru pomocí File.ReadAllText

Pro čtení obsahu textového souboru můžeme použít metodu ReadAllText.

Příklad:

string cesta = "data.txt";

// Čtení obsahu souboru
string obsah = File.ReadAllText(cesta);
Console.WriteLine($"Obsah souboru: {obsah}");

Výstup: Tento kód vypíše obsah souboru na konzoli.


Práce se soubory pomocí StreamWriter a StreamReader

Třídy StreamWriter a StreamReader umožňují práci s textovými soubory s větší kontrolou.

Zápis do souboru:

csharpZkopírovat kódusing System.IO;

StreamWriter zapisovac = new StreamWriter("novySoubor.txt");
zapisovac.WriteLine("Toto je řádek textu zapsaný pomocí StreamWriter.");
zapisovac.Close();

Čtení ze souboru:

using System.IO;

StreamReader ctec = new StreamReader("novySoubor.txt");
string obsah = ctec.ReadToEnd();
Console.WriteLine(obsah);
ctec.Close();

2. Serializace a deserializace

Serializace znamená převod objektu do formátu, který lze snadno uložit (např. do souboru nebo do databáze) nebo přenést po síti. Deserializace je opačný proces, při kterém se objekt obnoví ze serializovaného formátu.

V C# je serializace implementována pomocí různých technologií, jako je BinaryFormatter, XMLSerializer nebo JsonSerializer (pro JSON data).


BinaryFormatter (Binární serializace)

Binární serializace ukládá objekt v binární podobě. Pro její použití musíme označit třídu atributem [Serializable].

Příklad serializace:

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
public class Osoba
{
public string Jmeno { get; set; }
public int Vek { get; set; }
}

class Program
{
static void Main()
{
Osoba osoba = new Osoba { Jmeno = "Petr", Vek = 30 };
BinaryFormatter formatter = new BinaryFormatter();

using (FileStream stream = new FileStream("osoba.bin", FileMode.Create))
{
formatter.Serialize(stream, osoba);
Console.WriteLine("Objekt byl serializován.");
}
}
}

Příklad deserializace:

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

class Program
{
static void Main()
{
BinaryFormatter formatter = new BinaryFormatter();

using (FileStream stream = new FileStream("osoba.bin", FileMode.Open))
{
Osoba osoba = (Osoba)formatter.Deserialize(stream);
Console.WriteLine($"Jméno: {osoba.Jmeno}, Věk: {osoba.Vek}");
}
}
}

JSON Serializace pomocí JsonSerializer

JSON serializace je oblíbená díky své čitelnosti a širokému využití v moderních aplikacích.

Příklad serializace do JSON:

using System;
using System.Text.Json;
using System.IO;

public class Osoba
{
public string Jmeno { get; set; }
public int Vek { get; set; }
}

class Program
{
static void Main()
{
Osoba osoba = new Osoba { Jmeno = "Anna", Vek = 25 };
string json = JsonSerializer.Serialize(osoba);

File.WriteAllText("osoba.json", json);
Console.WriteLine("Objekt byl serializován do JSON.");
}
}

Příklad deserializace z JSON:

csharpZkopírovat kódusing System;
using System.Text.Json;
using System.IO;

class Program
{
    static void Main()
    {
        string json = File.ReadAllText("osoba.json");
        Osoba osoba = JsonSerializer.Deserialize<Osoba>(json);

        Console.WriteLine($"Jméno: {osoba.Jmeno}, Věk: {osoba.Vek}");
    }
}

3. Závěr

Práce se soubory a serializace jsou klíčové dovednosti při vývoji aplikací, které pracují s uloženými daty. C# poskytuje širokou škálu nástrojů pro efektivní manipulaci se soubory a převod objektů do různých formátů. Ať už potřebujete pracovat s textovými soubory nebo přenášet objekty ve formátu JSON, pochopení těchto technik vám umožní vytvářet robustní a efektivní aplikace.

Jirka

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

We use cookies to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners. View more
Cookies settings
Accept
Privacy & Cookie policy
Privacy & Cookies policy
Cookie name Active

Kdo jsme

Naše webová adresa je: https://www.jefta.cz.

Komentáře

Když návštěvníci zanechají na webu komentáře, shromažďujeme údaje zobrazené ve formuláři pro komentáře a také IP adresu návštěvníka a řetězec uživatelského agenta prohlížeče, abychom pomohli odhalit spam.

Anonymizovaný řetězec vytvořený z vaší e-mailové adresy (také nazývaný hash) může být poskytnut službě Gravatar, abyste zjistili, zda ji používáte. Zásady ochrany osobních údajů služby Gravatar jsou k dispozici zde: https://automattic.com/privacy/. Po schválení vašeho komentáře bude váš profilový obrázek viditelný pro veřejnost v kontextu vašeho komentáře.

Média

Pokud na web nahráváte obrázky, měli byste se vyhnout nahrávání obrázků s vloženými údaji o poloze (EXIF GPS). Návštěvníci webu si mohou stáhnout a extrahovat jakákoli data o poloze z obrázků na webu.

Soubory cookie

Pokud na našem webu zanecháte komentář, můžete se přihlásit k ukládání svého jména, e-mailové adresy a webu do souborů cookie. Jsou pro vaše pohodlí, abyste nemuseli znovu vyplňovat své údaje, když zanecháte další komentář. Tyto cookies vydrží jeden rok.

Pokud navštívíte naši přihlašovací stránku, nastavíme dočasný soubor cookie, abychom zjistili, zda váš prohlížeč přijímá soubory cookie. Tento soubor cookie neobsahuje žádné osobní údaje a po zavření prohlížeče je vyřazen.

Když se přihlásíte, nastavíme také několik souborů cookie pro uložení vašich přihlašovacích údajů a vašich voleb zobrazení obrazovky. Přihlašovací soubory cookie vydrží dva dny a soubory cookie možností obrazovky vydrží rok. Pokud zvolíte "Zapamatovat si mě", vaše přihlášení bude trvat dva týdny. Pokud se odhlásíte ze svého účtu, přihlašovací soubory cookie budou odstraněny.

Pokud upravíte nebo publikujete článek, uloží se do vašeho prohlížeče další cookie. Tento soubor cookie neobsahuje žádné osobní údaje a pouze označuje ID příspěvku článku, který jste právě upravili. Jeho platnost vyprší po 1 dni.

Vložený obsah z jiných webových stránek

Články na tomto webu mohou obsahovat vložený obsah (např. videa, obrázky, články atd.). Vložený obsah z jiných webových stránek se chová úplně stejně, jako kdyby návštěvník navštívil jinou webovou stránku.

Tyto webové stránky mohou shromažďovat údaje o vás, používat soubory cookie, vkládat další sledování třetích stran a monitorovat vaši interakci s tímto vloženým obsahem, včetně sledování vaší interakce s vloženým obsahem, pokud máte účet a jste na dané webové stránce přihlášeni.

S kým sdílíme vaše údaje

Pokud požádáte o resetování hesla, vaše IP adresa bude zahrnuta v e-mailu pro resetování.

Jak dlouho vaše údaje uchováváme

Pokud zanecháte komentář, bude komentář a jeho metadata uchována po neomezenou dobu. Je to proto, abychom mohli rozpoznat a schválit jakékoli následné komentáře automaticky, místo abychom je drželi ve frontě na moderování.

Pro uživatele, kteří se zaregistrují na našich webových stránkách (pokud existují), ukládáme také osobní údaje, které poskytují, v jejich uživatelském profilu. Všichni uživatelé mohou kdykoli zobrazit, upravit nebo smazat své osobní údaje (kromě toho, že nemohou změnit své uživatelské jméno). Správci webových stránek mohou tyto informace také zobrazit a upravovat.

Jaká práva máte nad svými údaji

Pokud máte účet na této stránce nebo jste zanechali komentáře, můžete požádat o zaslání exportovaného souboru osobních údajů, které o vás uchováváme, včetně všech údajů, které jste nám poskytli. Můžete také požádat, abychom vymazali veškeré osobní údaje, které o vás uchováváme. To nezahrnuje žádné údaje, které jsme povinni uchovávat pro administrativní, právní nebo bezpečnostní účely.

Kam se posílají vaše data

Komentáře návštěvníků mohou být kontrolovány prostřednictvím služby automatické detekce spamu.

Save settings
Cookies settings