Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.

Práca s vlastnými súbory v C # 1 - Zip archív

V predchádzajúcom kvíze, Kvíz - Súbory v C# .NET, sme si overili nadobudnuté skúsenosti z kurzu.

Vítam vás u prvého dielu seriálu o tvorbe súborov vlastného typu. Teraz už viete pracovať s množstvom druhov súborov, viete ich ukladať a otvárať, sťahovať, odosielať, .... Predstavte si však reálnu aplikáciu na evidenciu zamestnancov. Zamestnanec bude mať textové údaje (meno, priezvisko a email), dátum (datum narodenia), číslo (telefónne číslo) a obrázok (fotku). Už len kvôli obrázku môže byť na prvý pohľad problém všetky tieto dáta uložiť a to ideálne do jedného jediného súboru. Teoreticky by sme mohli zvoliť nejaký binárny formát dát (kvôli obrázku) a vložiť do neho i textovej údaje. Prakticky sú binárne súbory pomerne nešikovné a zle sa s nimi reaguje na zmeny formátu.

Zips

Podobné aplikácie často využívajú na ukladanie dát archívy. Vezmite si taký MS-Word a jeho dokumenty s príponou súborov docx. Keď zmeníte príponu ľubovoľného docx súboru na .zip, zistíte, že dokument je v skutočnosti archív zips, len s inou príponou. Skúste si to.

Pozn .: Windows skrývajú v predvolenom nastavení prípony známych súborov, takže namiesto dokument.docx vidíte len Dokument. Nastavenie zmeníte v ovládacom paneli -> Zobraziť podľa: Ikony -> Možnosti priečinka -> Zrušiť zatržítko Skryť prípony známych typov.

Ako archív v sebe môže súbor obsahovať jednoducho niekoľko súborov a navonok sa tvárou pre nič netušiaceho používateľa ako jeden. Presne archívu zip využijeme aj k uloženiu nášho zamestnanca. A miesto .zip nastavíme súboru úplne inú príponu, ponúka zo .zamestnanec alebo ak sa chcete držať třípísmenných tak len .zam.

Prípona súboru totiž slúžia len na to, aby operačný systém Windows zistil v akej aplikácii má súbor otvoriť, keď na neho používateľ poklepe. Väčšinou platí, že má každý súbor na konci názvu bodku a 3-písmenový príponu. V skutočnosti nemusí mať súbor príponu vôbec žiadnu, môže ich mať viac, môžu byť dlhšie ako 3 znaky a dokonca nemusí vôbec zodpovedať tomu, čo je v súbore uložené. My budeme súbor .zip maskovať ako súbor .zamestnanec. Zips nenecháme z toho dôvodu, aby to používateľa nezmátlo a nezačal súbory rozbaľovať a meniť.

Formát súborov .zamestnanec

Štruktúra zazipované zložky by mohla byť nasledovné:

  • Tomáš_Šeldoskle­pa.zamestnanec info.xml

    foto.jpg

  • info.xml
  • foto.jpg

Súbor Info.xml by mohol vyzerať nasledovne:

<zamestnanci>
    <zamestnanec>
        <jmeno>Tomáš</jmeno>
        <prijmeni>Šeldosklepa</prijmeni>
        <email>[email protected]</email>
        <telefon>123456789</telefon>
        <narozeni>1.1.1970</narozeni>
    </zamestnane>
</zamestnanci>

Element zamestnanci obaľuje zamestnance je tu preto, že aplikácia môže niekedy v budúcnosti spracovávať viac zamestnancov. Nad takými "drobnosťami" je potrebné pri návrhu premýšľať.

Tvorba aplikácie Zamestnanec

Vytvorte si nový projekt, formulárové aplikáciu.

Rozloženie ovládacích prvkov - Súbory v C# .NET

Aplikácia bude obsahovať nasledujúce formulárové prvky:

Názov typ
btnNacist Button
btnVybratFoto Button
btnUlozit Button
txtJmeno TextBox
txtPrijmeni TextBox
txtEmail TextBox
dtpNarozeni DateTimePicker
pcbFoto PictureBox
K prvkom si môžete dať popisky.

Výber obrázku

Poklepeme na tlačidlo vyber obrázok (na predchádzajúcom znázornenie je toto tlačidlo symbolizované ... pri obrázku). Vytvorí sa obsluha udalosti Click.

V obsluhu vytvoríme nový OpenFileDialog. Ako filter prípon mu nastavíme prípony JPG, PNG a BMP. Filter sa píše tak, že najprv napíšete popis, ktorý sa zobrazí v dialógu. Oddelíte pomocou | (Pravý Alt + W) a napíšete * .pripona a potom oddelíte zase pomocou | a zapisujete ďalšie podporovanú príponu. Výsledok je celkom neprehľadný, ale čo narobíme, pre náš prípad nám postačí:

Fotka JPG (*.jpg)|*.jpg|Fotka PNG (*.png)|*.png|Fotka BMP (*.bmp)|*.bmp

Dialóg otvoríme a porovnáme jeho návratovú hodnotu. Pokiaľ bude OK, užívateľ vybral obrázok. Pokiaľ bude čokoľvek iné, užívateľ buď vybral nezmysel alebo okno stornoval. Keď používateľ vyberie obrázok, obrázok načítame do zamestnanca a zavoláme metódu AktualizujFor­mularovaData, ktorú vytvoríme neskôr.

private void btnvybratFoto_Click(object sender, EventArgs e)
{
    OpenFileDialog dialog = new OpenFileDialog();
    dialog.Filter = "Fotka JPG (*.jpg)|*.jpg|Fotka PNG (*.png)|*.png|Fotka BMP (*.bmp)|*.bmp";
    if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
        zamestnanec.Foto = Image.FromFile(dialog.FileName);
        AktualizujFormularovaData();
    }
}
Dialóg pre výber fotky v C# .NET - Súbory v C# .NET

Trieda Zamestnanec

Začneme tým, čo by malo byť jasné - vlastnosťami. Náš zamestnanec bude mať Meno, Priezvisko, Email, Telefón, DatumNarození a bude mať aj fotku.

class Zamestnanec
{
    public string Jmeno { get; set; }
    public string Prijmeni { get; set; }
    public string Email { get; set; }
    public string Telefon { get; set; }
    public DateTime DatumNarozeni { get; set; }
    public Image Foto { get; set; }
}

Náš prvý konštruktor (ďalšie pridáme, až ich budeme potrebovať) bude vytvárať nového prázdneho zamestnanca. Neurobí nič iné, než do vlastností priradí prázdnej hodnoty.

public Zamestnanec()
{
    Jmeno = "";
    Prijmeni = "";
    Email = "";
    Telefon = "";
    DatumNarozeni = DateTime.Now;
}

Nakoniec si vo formulári vytvorte inštanciu zamestnanca ako atribút triedy formulára.

private Zamestnanec zamestnanec = new Zamestnanec();

Teraz máme aplikáciu navrhnutú, nabudúce už sa konečne pozrieme na samotné spracovávanie zložiek ZIP a prvýkrát si vyexportuje a importuje zamestnanca.


 

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 201x (53.84 kB)
Aplikácia je vrátane zdrojových kódov v jazyku C#

 

Predchádzajúci článok
Kvíz - Súbory v C# .NET
Všetky články v sekcii
Súbory v C# .NET
Článok pre vás napísal Michal Žůrek - misaz
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje tvorbě aplikací pro počítače, mobilní telefony, mikroprocesory a tvorbě webových stránek a webových aplikací. Nejraději programuje ve Visual Basicu a TypeScript. Ovládá HTML, CSS, JavaScript, TypeScript, C# a Visual Basic.
Aktivity