Spis treści Poprzednia strona: Coś dla matematyków Następna strona: XML, czyli dane hierarchiczne
Zanim odpowiemy na pytanie „co to jest plik” zastanówmy się nad przechowywaniem danych. Dane mogą być różnego rodzaju (liczbowe, tekstowe, obrazki, dźwięki, itp.), ale aby je przechować powinny logicznie tworzyć jakąś jedną całość. Całość tę trzeba będzie jakoś nazwać (aby po tej nazwie móc ponownie dane odnaleźć), gdzieś umieścić (na dysku, pendrive, w chmurze, ), oraz dodatkowo opatrzyć atrybutami (kto i kiedy utworzył, bądź zmienił, do czego służy, co można z nim zrobić, kto może to zrobić, kto i kiedy może to w ogóle zobaczyć, itp.). Całość tę nazywamy plikiem. W programowaniu plik traktujemy jako znajdujący się gdzieś (na jakimś fizycznym urządzeniu), a zdolność do jego przechowywania dana jest programiście przez system operacyjny, a systemowi dana jest przez sterownik urządzenia, a sterownikowi przez układy elektroniczne takie jak pamięć wewnętrzna i układy sterowania. W przypadku plików w tzw. chmurze, albo na woluminach sieciowych często nie wiemy nawet jakie urządzenie fizycznie przechowuje nasz plik. Nie ma to znaczenia. Dla programisty istotne jest tylko to, że plik może być przechowany. I tyle. Kiedy plik nie może być przechowany? Wtedy, gdy się nie zmieści. Każdy plik ma swój rozmiar i każda lokalizacja ma swoją pojemność. Nie można umieścić za dużego rozmiaru w miejscu o za małej pojemności. A zatem podsumujmy, plik ma:
- nazwę
- lokalizację
- rozmiar
- atrybuty dodatkowe
Lokalizacja wraz z nazwą stanowi tzw. ścieżkę dostępu do pliku, albo krócej ścieżkę pliku i zależy od systemu operacyjnego. W systemie Windows ścieżka składa się z 3 części:
- litery dysku (np.: C) i dwukropka (:)
- folderu/katalogu i ewentualnie podfolderów/podkatalogów (np.: Users\nadzieja\Documents) oddzielonych znakiem \ (tzw. separatorem ścieżki, który w .NET możemy odczytać z System.IO.Path.DirectorySeparatorChar)
- nazwy pliku (np.: Mój mały plik.txt), której końcowa kilkuliterowa część po kropce zwana jest rozszerzeniem nazwy i domyślnie jej wyświetlanie jest zablokowane w systemie Windows; rozszerzenie nazwy może (ale nie musi) wskazywać na typ pliku
Części ścieżki od siebie nawzajem także są oddzielone separatorem ścieżki, przykładowo C:\Users\nadzieja\Documents\Mój mały plik.txt. Ponieważ w C# znak sekwencji ucieczki pokrywa się z separatorem ścieżki w systemie Windows (oba są odwrotnym ukośnikiem \ [backslash]) to aby przechować ścieżkę do pliku w zmiennej typu string trzeba zadbać o właściwe potraktowanie odwrotnego ukośnika:
string ścieżka1 = @"C:\Users\nadzieja\Documents\Mój mały plik.txt"; string ścieżka2 = "C:\\Users\\nadzieja\\Documents\\Mój mały plik.txt";
Oba powyższe łańcuchy znaków zawierają te same znaki; zmienna ścieżka2 nie zawiera podwójnych ukośników, tylko pojedyncze (patrz rozdział o łańcuchach znaków). Zarówno nazwa pliku, jak i nazwa folderu (zwanego zamiennie katalogiem) może zawierać spacje. Istniał kiedyś limit na długość całej ścieżki i są to 254 znaki. Niektóre aplikacje wciąż „wywalają się” dla dłuższych ścieżek, więc lepiej tego nie przekraczać.
Rozmiar pliku mierzymy w bajtach. Kiedy bajtów jest dużo, to mówimy o megabajtach (1 MB = 1024 B), gigabajtach (1 GB = 1024 MB), terabajtach (1 TB = 1024 GB), itd.
Rodzaje plików
Pliki zawierają dane różnego rodzaju i dzielimy je ze względu na ich przeznaczenie:
- pliki tekstowe
- dokumenty (tekst sformatowany)
- pliki konfiguracyjne
- pliki danych aplikacji
- bazy danych
- grafika (rastrowa, wektorowa, inżynierska, animacje)
- muzyka (zapis dźwięków + ewentualnie obrazki, informacje o autorze, teksty piosenek)
- filmy (ruchome obrazy + dźwięk + dodatki takie jak napisy, wersje językowe, menu)
- archiwa (dane skompresowane, zabezpieczone)
- pliki wykonywalne (programy i aplikacje)
- biblioteki kodu (wykorzystywane przez jeden lub więcej programów)
Formaty danych
Pliki określonych typów zwykle zawierają dane w określonych formatach. Format danych to rodzaj umowy między twórcą pliku, a osobą korzystającą z danych zawartych w pliku. Twórca gwarantuje, że będzie się bezwzględnie ściśle stosować do wymagań formatu aby niezawodnie i pewnie dostarczyć dane odbiorcy. Odbiorca wystarczy, że dostosuje się do danego formatu, aby dane które otrzyma były dla niego wartościowe. Formaty danych często ustalane są przez organizacje konsumentów, albo producentów, albo jednych i drugich. Każdy format danych ma swoją nazwę, skrót, wersję, itp. – może zatem mieć różne odmiany. Zdolność danej aplikacji do obsługi danego formatu danych jest wystarczająca do tego, aby z danych w pliku w takim formacie skorzystać. Nie jest jednak konieczna, gdyż zwykle istnieją specjalne programy (konwertery) służące do konwersji danych między różnymi formatami, czyli zamiany jednego formatu na inny przy zachowaniu tych samych (lub zbliżonych) danych. Jeśli mamy dane w formacie nieobsługiwanym przez naszą aplikację, ale mamy też konwerter do formatu obsługiwanego, to możemy skorzystać z tych danych w sposób niebezpośredni, konwertując dane wtedy, gdy jest to konieczne.
Typy plików
W systemie Windows istnieje możliwość powiązania konkretnych aplikacji z plikami danych przeznaczonymi do przetwarzania przy pomocy tych aplikacji. Pliki te najczęściej są identyfikowane przez rozszerzenie nazwy, zwykle trzy- lub czteroliterowy ciąg znaków po kropce na końcu nazwy pliku. Typ pliku to w dużym uproszczeniu powiązanie rozszerzenia nazwy z konkretną aplikacją zainstalowaną w systemie operacyjnym komputera. Zwykle jest to plik, w którym aplikacja ta przechowuje swoje dane potrzebne jej do działania, albo dane użytkownika. Dane te zwykle są w określonym formacie. Jeśli jest to format otwarty (którego specyfikacja znana jest szerzej niż tylko producentowi danej aplikacji), to wiele różnych aplikacji może nadawać się do obsługi (tj. wyświetlania, tworzenia, zmieniania) plików w tym formacie. Na przykład program MS Word tworzył pliki o rozszerzeniu .doc (służące do przygotowywania sformatowanego tekstu dokumentów i jego przygotowania do wydruku), które mogą być także obsługiwane w programie OpenOffice. Program OpenOffice wprowadza także swój format danych dla dokumentów o rozszerzeniu .odf (Open Document Format). Podobnie jest z plikami zawierającymi grafikę. Wiele programów obsługuje te same formaty graficzne.
Istotna uwaga
Zanim zapoznasz się z plikami weź pod uwagę, że w nowoczesnych systemach dane przechowuje się nie w plikach, a w tzw. chmurze danych albo w bazie danych, tak aby były dostępne dla aplikacji z każdego miejsca i na każdym urządzeniu, a nie tylko na tym, które fizycznie przechowuje pliki danych. Pomysł ten polega na tym, że istnieją specjalne komputery zwane serwerami, na których działają rozmaite usługi, które z kolei udostępniają dane aplikacjom poprzez sieć Internet. Systemy takie potrzebują dostępu do sieci Internet (niektóre nieprzerwanego dostępu, inne okazjonalnego dostępu aby przeprowadzać okresowe synchronizacje danych). Trzeba jednak pamiętać, że same serwery muszą te dane fizycznie przechowywać i robią to na ogół właśnie przy pomocy plików. Jest duża szansa, że jako programista nie spotkasz się w ogóle z koniecznością obsługi plików w twojej aplikacji (ale na pewno będziesz je obsługiwać przy pomocy aplikacji już istniejących) tak długo, dopóki nie zaczniesz tworzyć oprogramowania przeznaczonego na serwery. Pliki istnieją jednak na wszystkich komputerach, a to dlatego, że każdy komputer jest w pewnym sensie serwerem – ale o tym później.
Twój pierwszy plik
…
Spis treści Poprzednia strona: Coś dla matematyków Następna strona: XML, czyli dane hierarchiczne