Práce s vlastními soubory v C# 1 - Zip archiv

C# .NET Práce se soubory Práce s vlastními soubory v C# 1 - Zip archiv

Vítám vás u prvního dílu seriálu o tvorbě souborů vlastního typu. Nyní již umíte pracovat se spoustou druhů souborů, umíte je ukládat a otevírat, stahovat, odesílat, …. Představte si ovšem reálnou aplikaci k evidenci zaměstnanců. Zaměstnanec bude mít textové údaje (jméno, příjmení a email), datum (datum narozeni), číslo (telefonní číslo) a obrázek (fotku). Už jen kvůli obrázku může být na první pohled problém všechna tato data uložit a to ideálně do jednoho jediného souboru. Teoreticky bychom mohli zvolit nějaký binární formát dat (kvůli obrázku) a vložit do něj i textové údaje. Prakticky jsou binární soubory poměrně nešikovné a špatně se s nimi reaguje na změny formátu.

Zip

Podobné aplikace často využívají k ukládání dat archivy. Vezměte si takový MS-Word a jeho dokumenty s příponou souborů docx. Když změníte příponu libovolného docx souboru na .zip, zjistíte, že dokument je ve skutečnosti archiv zip, pouze s jinou příponou. Zkuste si to.

Pozn.: Windows skrývají ve výchozím nastavení přípony souborů známých typů, takže místo Dokument.docx vidíte jen Dokument. Nastavení změníte v Ovládacích panelech -> Zobrazit podle: Ikony -> Možnosti složky -> Zrušit zatržítko Skrýt přípony známých typů.

Jako archiv v sobě může soubor obsahovat jednoduše několik souborů a navenek se tváří pro nic netušícího uživatele jako jeden. Přesně archivu zip využijeme i k uložení našeho zaměstnance. A místo .zip nastavíme souboru úplně jinou příponu, nabízí ze .zamestnanec nebo pokud se chcete držet třípísmenných tak jen .zam.

Přípona souboru totiž slouží jen k tomu, aby operační systém Windows zjistil v jaké aplikaci má soubor otevřít, když na něj uživatel poklepe. Většinou platí, že má každý soubor na konci svého názvu tečku a 3-písmennou příponu. Ve skutečnosti nemusí mít soubor příponu vůbec žádnou, může jich mít více, mohou být delší než 3 znaky a dokonce nemusí vůbec odpovídat tomu, co je v souboru uložené. My budeme soubor .zip maskovat jako soubor .zamestnanec. Zip neponecháme z toho důvodu, aby to uživatele nezmátlo a nezačal soubory rozbalovat a měnit.

Formát souborů .zamestnanec

Struktura zazipované složky by mohla být následující:

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

Soubor Info.xml by mohl vypadat následovně:

<zamestnanci>
    <zamestnanec>
        <jmeno>Tomáš</jmeno>
        <prijmeni>Šeldosklepa</prijmeni>
        <email>tomas.seldosklepa@itnetwork.cz</email>
        <telefon>123456789</telefon>
        <narozeni>1.1.1970</narozeni>
    </zamestnane>
</zamestnanci>

Element zamestnanci obalující zamestnance je zde proto, že aplikace může někdy v budoucnu zpracovávat více zaměstnanců. Nad takovými "drobnostmi" je potřeba při návrhu přemýšlet.

Tvorba aplikace Zamestnanec

Vytvořte si nový projekt, formulářovou aplikaci.

Rozložení ovládacích prvků

Aplikace bude obsahovat následující formulářové prvky:

Název Typ
btnNacist Button
btnVybratFoto Button
btnUlozit Button
txtJmeno TextBox
txtPrijmeni TextBox
txtEmail TextBox
dtpNarozeni DateTimePicker
pcbFoto PictureBox

K prvkům si můžete dát popisky.

Výběr obrázku

Poklepeme na tlačítko vyber obrázek (na předchozím znázornění je toto tlačítko symbolizováno … u obrázku). Vytvoří se obsluha události Click.

V obsluze vytvoříme nový OpenFileDialog. Jako filtr přípon mu nastavíme přípony JPG, PNG a BMP. Filtr se píše tak, že nejprve napíšete popisek, který se zobrazí v dialogu. Oddělíte pomocí | (pravý Alt + W) a napíšete *.pripona a pak oddělíte zase pomocí | a zapisujete další podporovanou příponu. Výsledek je celkem nepřehledný, ale co naděláme, pro náš případ nám postačí:

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

Dialog otevřeme a porovnáme jeho návratovou hodnotu. Pokud bude OK, uživatel vybral obrázek. Pokud bude cokoliv jiného, uživatel buď vybral nesmysl nebo okno stornoval. Jakmile uživatel vybere obrázek, obrázek načteme do zaměstnance a zavoláme metodu AktualizujFor­mularovaData, kterou vytvoříme později.  

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();
        }
}
Dialog pro výběr fotky v C# .NET

Třída Zamestnanec

Začneme tím, co by mělo být jasné - vlastnostmi. Náš zaměstnanec bude mít Jméno, Příjmení, Email, Telefon, DatumNarození a bude mít i 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áš první konstruktor (další přidáme, až je budeme potřebovat) bude vytvářet nového prázdného zaměstnance. Neudělá nic jiného, než do vlastností přiřadí prázdné hodnoty.

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

Nakonec si ve formuláři vytvořte instanci zaměstnance jako atribut třídy formuláře.

private Zamestnanec zamestnanec = new Zamestnanec();

Nyní máme aplikaci navrženou, příště už se konečně podíváme na samotné zpracovávání složek ZIP a poprvé si vyexportujeme a naimportujeme zaměstnance.


 

Stáhnout

Staženo 134x (53.84 kB)
Aplikace je včetně zdrojových kódů v jazyce C#

 

  Aktivity (1)

Článek pro vás napsal Michal Žůrek (misaz)
Avatar
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.

Jak se ti líbí článek?
Celkem (3 hlasů) :
55555


 



 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!