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 ;)!
Tweet |
"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# 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 ;).