Strona główna » Kursy » Kurs C# » Metadane Pliku
 

Metadane Pliku

Wstęp

Do odczytywania informacji dotyczących pliku służy klasa FileInfo. Dostarcza ona szereg metod i właściwości dzięki którym szybko można sprawdzić datę modyfikacji pliku, albo atrybuty pliku. W tym artykule zostanie wyjaśnione jak skorzystać z wspomnianej klasy.

Deklaracja

Klasa FileInfo jest dostępna w przestrzeni nazw System.IO. W celu pobrania informacji na temat pewnego pliku należy utworzyć nowy obiekt klasy FileInfo i podać jako argument bezpośrednią ścieżkę do pliku. Poniżej został utworzony uchwyt do aktualnie uruchomionego programu.

  1. string plik = System.Reflection.Assembly.GetExecutingAssembly().Location;
  2. FileInfo info = new FileInfo(plik);

Wypisanie danych

Klasa FileInfo pozwala na odczytanie takich informacji jak: czas utworzenia CreationTime, rozszerzenie Extension, czy plik jest tylko do odczytu IsReadOnly czy rozmiar pliku Length. Oto przykładowy sposób wypisania podstawowych informacji na temat pliku:

  1. Console.WriteLine(" Nazwa: {0}", info.Name);
  2. Console.WriteLine(" Rozszerzenie: {0}", info.Extension);
  3. Console.WriteLine(" Rozmiar: {0} b", info.Length);
  4. Console.WriteLine(" Modyfikowany: {0}", info.CreationTime);
  5. Console.WriteLine("Ostatni dostęp: {0}", info.LastAccessTime);
  6. Console.WriteLine(" Tylko odczyt: {0}", info.IsReadOnly ? "Tak" : "Nie");

Pusty Plik

FileInfo może również posłużyć do tworzenia nowego pliku jeśli nie istnieje. Mianowicie podanie ścieżki do nieistniejącego pliku nie powoduje błędu konstruktora. Z tego powodu należy zawsze sprawdzić pole Exists czy udało się odczytać informacje o pliku tj. czy plik wogle istnieje. Następnie można otrzymać uchwyt do strumienia danych, aby coś odczytać / zapisać w pliku.

  1. FileInfo empty = new FileInfo("test.txt");
  2. if (!empty.Exists)
  3. {
  4. empty.Create();
  5. }
  6. var strumien = empty.OpenRead();
  7. strumien.Close();

Po utworzeniu strumienia i jego wykorzystaniu należy pamiętać, aby go zamknąć!

Szyfrowanie

Utworzony obiekt klasy FileInfo pozwala również na zaszyfrowanie Encrypt() oraz odszyfrowanie Decrypt() wybranego pliku. Do zaszyfrowanego pliku dostęp będzie miało jedynie aktualne konto zalogowane na komputerze. Stan czy plik jest zaszyfrowany można sprawdzić poprzez porównanie pola Attribute z wbudowaną stałą Encrypted. Oto przykładowy kod:

  1. Console.WriteLine(" Zaszyfrowany: {0}", empty.Attributes == FileAttributes.Encrypted ? "Tak" : "Nie");
  2. Console.WriteLine("> Szyfruj");
  3. empty.Encrypt();
  4. Console.WriteLine(" Zaszyfrowany: {0}", empty.Attributes == FileAttributes.Encrypted ? "Tak" : "Nie");
  5. Console.WriteLine("> Rozszyfruj");
  6. empty.Decrypt();
  7. Console.WriteLine(" Zaszyfrowany: {0}", empty.Attributes == FileAttributes.Encrypted ? "Tak" : "Nie");

Powyższy kod nie uwzględnia wyjątków, które mogą zostać rzucone podczas wykonywania operacji. Przykładowo plik po odczytaniu z niego danych mógł przestać istnieć, dlatego zawsze należy to sprawdzić przed wykonaniem operacji, albo należy odpowiednio obsłużyć wyjątek!