Programujeme v jazyku C# - Diel 21. - Súbory I .

Michal Čižmár  /  13. 04. 2005, 00:00

Pre mňa je vždy dôležité akú veľkú podporu má daný prog. jazyk pre prácu so súbormi. Keď si prečítate tento článok zistíte, že C# má veľa funkcií nielen na vytváranie, zapisovanie a čítanie súborov, ale aj veľa podporných príkazov pre prácu so súborovým systémom, práve ktorým sa venujem v tomto článku.

Pod podpornými príkazmi pre prácu so súborovým systémom si môžete predstaviť také veci, ako prezeranie obsahu adresárov, kopírovanie súborov, vymazávanie a podobne, preto odporúčam čítať článok do konca + aj ďalší diel..

POZOR !
Všetky príkazy, ktoré pracujú s adresármi a súbormi využívajú minimálne triedy z knižnice System.IO. Takže ju nezabudnite pridať na začiatok zdrojákov pomocou
using System.IO;

>>Informácie o adresároch
Malú ukážku, čo sa dá pozisťovať o adresároch môžete vidieť v príklade :

Príklad 21.1
//----------------------------------------------------------
using
System;
using
System.IO;
class
MainClass
{
      public static void Main(string[] args)
     {
            string dirName = Directory.GetCurrentDirectory();
            DateTime dt = Directory.GetCreationTime(dirName);
           string []files = Directory.GetFiles(dirName);
           string []dirs = Directory.GetDirectories(dirName);
           string []mixs = Directory.GetFileSystemEntries(dirName);

           Console.WriteLine(" Sucasny adresar tohto programu je:{0}", dirName);
           Console.WriteLine(" Bol vytvoreny {0}.{1} {2}",
                                            dt.Day,dt.Month,dt.Year);
           bool exists = Directory.Exists("c:\windows");
           Console.WriteLine(" Existuje adresar c:\windows? {0}",exists);

           Console.WriteLine(" Vypis suborov");
           foreach(string file in files)
                Console.WriteLine(" {0}",file);

           Console.WriteLine(" Vypis podadresarov");
           foreach(string dir in dirs)
                Console.WriteLine(" {0}",dir);

           Console.WriteLine(" Vypis suborov + podadresarov");
           foreach(string mix in mixs)
               Console.WriteLine(" {0}",mix);
     }
}

//---------------------------------------------------------
Priklad na stiahnutie: www.inet.sk/download/user/Priklad21.1_Directory.zip

Ako vidíte v príklade, všetky potrebné príkazy nájdeme v triede Directory. Môžeme zistiť jednoducho aký je aktuálny adresár programu (hneď na začiatku je to aj adresár, v ktorom bol program spustený). Výstupom je textový reťazec, ktorý môže vyzerať napr. takto :

F:\SharpDevelop Projects\Priklad21.1_Directory\bin\Debug

Potom môžeme zistiť, kedy bol daný adresár vytvorený. Pozor, tu už potrebujete vstupný parameter pre funkciu (meno skúmaného adresára), ktorý sme v našom prípade získali v predchádzajúcom kroku.

Ďalej vidíte ako jednoducho môžeme získať úplné mená (aj s úplnou cestou k nim) všetkých súborov vo vybranom adresári. Ako získať len samotné mená súborov je v stati: informácie o súboroch v ďalšom dieli. Podobne zistíme všetky podadresáre, prípadne funkcia
GetFileSystemEntries() nám vráti aj podadresáre, aj súbory.

>>Manipulácia s adresármi
Takže dám hneď príklad, nie? :-)

Príklad 21.1

//----------------------------------------------------------
using System;
using
System.IO;
class
MainClass
{
     public static void Main(string[] args)
     {
            string dirName;

           Console.Write(" Zadajte meno adresara pre vytvorenie:");
           dirName = Console.ReadLine();

           Directory.CreateDirectory(dirName);
           Directory.SetCreationTime(dirName,new DateTime(2222,2,22));

          Console.WriteLine(" Nadradeny adresar sa vola {0}",
                                           Directory.GetParent(dirName));

          Directory.SetCurrentDirectory(dirName);
          Directory.CreateDirectory("Vnutorny");

          Console.WriteLine("Teraz je vytvoreny adresar : vnutorny");
          Console.WriteLine(" Stlacte enter");
          Console.Read();
          Directory.Delete("vnutorny");
          Console.WriteLine(" a teraz je uz vymazany");

          Console.WriteLine(" Mate disky s tymito pismenami");
          string [] drives = Directory.GetLogicalDrives();
         foreach(string drive in drives)
             Console.WriteLine(drive);
    }
}
//----------------------------------------------------------
Priklad na stiahnutie: www.inet.sk/download/user/Priklad21.2_DirectoryManip.zip

V  príklade najprv vytvoríme adresár podľa želania užívateľa. Funkcia CreateDirectory() môže vyvolať veľa typov výnimiek (chýb), takže by bolo dobré, keby ste si ich pozreli v dokumentácii, keď s tým budete robiť. Jednoducho sa dá zmeniť dátum vytvorenia adresára a veľa iných parametrov.

Je zaujímavé, že keď sa pokúsite vytvoriť adresár, ktorý už existuje, ale je prázdny, tak sa chyba nevyvolá. Samozrejme, že C# dodržiava aj oprávnenia užívateľov, takže nemôžete napr. vytvárať adresáre na tej partícii disku, pre ktorú nemáte potrebné oprávnenie.

Pohybovať sa po adresároch
môže pomocou funkcie
SetCurrentDirectory(). Pre nadradený adresár stačí zadať ako ciel len klasické dve bodky .. . Ak chcete len zistiť meno nadradeného adresára, použite funkciu GetParent().

>>Čo bude nabudúce?

Práca so súbormi je veľmi rozsiahla téma, takže nabudúce s ňou pokračujeme. Budeme sa zaoberať tým, ako zistiť informácie o súboroch a s nimi manipulovať.

>>Predchádzajúce diely

Programujeme v jazyku C# - Diel 20. – Console
Programujeme v jazyku C# - Diel 19. - Strings IV.
Programujeme v jazyku C# - Diel 18. - Strings III.
Programujeme v jazyku C# - Diel 17. - Strings II.

Viac na : www.inet.sk/csharp

Otázky a konštruktívnu kritiku píšte do diskusie alebo na môj e-mail.

Michal Čižmár

micitn@orangemail.sk








Neprehliadnite: