Jason. Cała informatyka w jednym miejscu!

Przechodzimy do rozwinięcia poprzedniego tematu, który został przerwany w dramatycznych okolicznościach :P. Skoncentrujemy się teraz na pierwszej z dwóch klas potomnych klasy "FileSystemInfo" jaką będzie "FileInfo" w języku C#. Obiecuję, tym razem będzie przykład ;)!

"FILEINFO" W JĘZYKU C# PRZEZNACZONE DO OBSŁUGI PLIKÓW!

Tytułowa klasa została stworzona po to, aby na podstawie określonej ścieżki dostępu do pliku, dało się wczytać ten plik i uzyskać o nim więcej informacji. Pojęcie "plik" może być umowne, natomiast w tym przypadku chodzi o taki plik "plik", czyli plik niebędący katalogiem (choć katalog to także plik) :D. Na katalogi jest przeznaczona inna klasa, "DirectoryInfo".

"FileInfo" jest klasą potomną klasy "FileSystemInfo", a zatem to jest dla nas znak, że każdy obiekt tego typu automatycznie wchodzi w posiadanie wszystkich właściwości i metod przedstawionych w artykule poprzednim. Mając ten fakt na uwadze, mogę zademonstrować teraz co TA klasa sobą reprezentuje albo też co ona sama daje od siebie.

WŁAŚCIWOŚCI KLASY "FILEINFO"

Oto kilka najistotniejszych właściwości jakimi dysponuje "FileInfo" w języku C#:

NAZWA ZNACZENIE MODYFIKOWALNA
Directory Pobranie katalogu nadrzędnego nie
DirectoryName Pobranie pełnej ścieżki katalogu, który posiada podstawiony plik
IsReadOnly Pobranie lub ustawienie atrybutu pliku czy ma być tylko do odczytu tak
Length Pobranie rozmiaru pliku w bajtach nie

METODY KLASY "FILEINFO"

A oto parę metod "FileInfo" w języku C#:

NAZWA ZNACZENIE
AppendText Zwrócenie obiektu "StreamWriter" ustawionego na dopisywanie do pliku.
CopyTo Kopiowanie pliku do nowego pliku tworzonego w podanej jako parametr ścieżce.
Create Zwrócenie obiektu "FileStream" tworzącego nowy plik.
CreateText Zwrócenie obiektu "StreamWriter" do zapisu do nowego pliku.
Decrypt Deszyfrowanie pliku.
Encrypt Nałożenie szyfrowania na plik.
MoveTo Przeniesienie pliku w inne miejsce podane jako parametr formalny.
Open Zwrócenie obiektu typu "FileStream" wymagając podania jednego z trybów dostępu ("FileMode").
OpenRead Zwrócenie obiektu typu "FileStream" ustawionego na "tylko do odczytu".
OpenText Zwrócenie obiektu typu "StreamReader" z ustawionym kodowaniem znaków UTF-8.
OpenWrite Zwrócenie obiektu typu "FileStream" ustawionego na "tylko do zapisu".
Replace Zamiana treści pliku dostępnego ze ścieżki podanej jako pierwszy parametr na treść pliku podanego w konstruktorze klasy "FileInfo" ORAZ wykonanie kopii zapasowej w nowo tworzonym pliku w ścieżce podanej jako drugi parametr.

ZABEZPIECZ SIĘ PRZED WYJĄTKOWYMI SYTUACJAMI!

Za każdym razem kiedy widzicie temat obsługi plików, bądźcie pewni jednej rzeczy. NA PEWNO pojawi się ryzyko wystąpienia wyjątku podczas dowolnej operacji na pliku. Czy to otwieranie, tworzenie, zapisywanie, odczytywanie, cokolwiek innego, coś może się wyłożyć do góry kołami :P.

"FileInfo" w języku C# nie jest wyjątkiem od wyjątków (gra słów :D!). Używając tej klasy, metody mogą zgłosić następujące typy wyjątków:

NAZWA ZNACZENIE
UnauthorizedAccessException Brak praw dostępu lub plik jest tylko do odczytu
ArgumentException Podana ścieżka jest zerowej długości, zawiera znaki niedrukowane lub znaki nieprawidłowe (pełną tablicę można pobrać wywołując statyczną metodę "GetInvalidPathChars" z klasy "Path")
ArgumentNullException Parametr formalny dla ścieżki do pliku jest wartością pustą ("null")
PathTooLongException Ścieżka dostępu do pliku jest zbyt długa
DirectoryNotFoundException Podany katalog lub plik nie istnieje
IOException Błąd wejścia-wyjścia
NotSupportedException Nieprawidłowy format ścieżki dostępu do pliku

PRZYKŁAD KODU ŹRÓDŁOWEGO

Jeżeli chcecie wygodnie sobie korzystać z klasy "FileInfo" w języku C#, przydatne okaże się dopisanie sobie dyrektywy "using System.IO;", gdyż należy ona do rodziny konstrukcji służących do obsługi plików. To samo będzie dotyczyć tej drugiej klasy, "DirectoryInfo". A na razie, prosty program wyświetlający kilka informacji o wskazanym pliku i wykonujący na samym końcu jego kopię. Nie muszę mam nadzieję dodawać, że wcześniej trzeba się zaopatrzyć w jakiś plik (może to być najprostszy w świecie plik tekstowy :)):

string filename = "data.txt";
FileInfo fi = new FileInfo(filename);

Console.WriteLine("Rozszerzenie pliku {0}: {1}", filename, fi.Extension);
Console.WriteLine("Rozmiar pliku {0}: {1} bajtów", filename, fi.Length);
Console.WriteLine("Czy plik {0} jest tylko do odczytu?: {1}", filename, fi.IsReadOnly);
Console.WriteLine("Atrybuty pliku {0}: {1}", filename, fi.Attributes);
fi.CopyTo("kopia.txt");
Klasa "FileInfo" w języku C#

Klasa "FileInfo" w języku C# dysponuje szeregiem właściwości i metod udostępniających podstawowe operacje na pliku jako takim.


Może nic nadzwyczajnego, jednak od czegoś trzeba zacząć. Obsługa plików też pochłonie parę sztuk materiałów zanim uznam, że wszystko zostało napisane. Kieruję ten temat głównie dla osób programujących aplikacje okienkowe, co nie znaczy, że wcale się nie przyda całej reszcie programistów i koderów :). Następny przystanek: "DirectoryInfo" - operowanie na katalogach ;).

PODOBNE ARTYKUŁY