Witam i witam ponownie.
W tym wykładzie chcę mówić o dostępie do plików.
Więc pliki na dysku mają nazwę i zasady nazywania plików są
określane przez system operacyjny.
Być może będziesz musiał się dostosować nazwy w zależności od systemu operacyjnego,
na którym działa program.
Jeśli Twój program działa w systemie Windows w porównaniu z Linuksem rzeczywista
struktura katalogów jest również inna.
Więc jeśli używasz ukośników do przodu lub ukośniki w tył, musisz
to zmienić w swoim programie.
Ale w większości nazwy są względnie mają te same zasady
nazewnictwa i tak dalej.
Ale jest taka szansa musiałbyś to dostosować.
Program odwołuje się do pliku za pośrednictwem wskaźnik pliku lub wskaźnik strumienia.
Ponieważ działa na więcej niż tylko plik plik,
faktycznie możesz, wspomnieliśmy o tym wcześniej, ale standard Funkcje io działają na każdym urządzeniu.
Nazywa się to wskaźnikiem pliku, ale tak naprawdę powinno być
nazywane wskaźnikiem strumienia.
Skojarzysz wskaźnik pliku z plikiem programowo, gdy program
jest uruchamiany.
Więc to, co ostatecznie robisz, to ty utwórz wskaźnik wewnątrz
swojego programu, będzie to plik typu i który będzie reprezentował plik podczas czytania i
pisania do niego.
Używamy tych wskaźników pliku jako pliku bardziej efektywny sposób wskazywania plików, a nie
do nazwy, ponieważ może się ona
nieco różnić.
Wskaźnik będzie reprezentował co tak naprawdę wskazuje.
Możesz ponownie użyć wskaźników, wskazywać różne pliki przy
różnych okazjach, co znowu była reprezentowana przez nazwę pliku.
Wskaźnik pliku wskazuje na strukturę plik typu, który reprezentuje strumień.
Możesz rzeczywiście iść i popatrzeć w strukturze pliku, aby zobaczyć wszystko,
co jest w środku.
Ale zawiera takie informacje czy chcesz czytać, zapisywać lub
aktualizować plik, rozszerzenie adres bufora w pamięci, w którym przechowujesz
dane, a wskaźnik do bieżącej pozycji w pliku
dla następnej operacji.
Wspomnieliśmy, że sytuacja jest ważne, ponieważ
tam właśnie piszesz i czytasz.
I możesz ustawić wszystkie te informacje wewnątrz struktury za pomocą operacji
na plikach wejściowych i wyjściowych.
Operacje na plikach wejściowych i wyjściowych, kiedy otworzysz plik, faktycznie
określi, czy chcesz czytać lub pisać.
Możesz także zmienić plik aktualną pozycję, używając innych metod, takich jak szukaj
i tak dalej o którym będziemy rozmawiać.
Jeśli chcesz użyć kilku plików symultanicznie w swoim programie, musisz
stworzyć osobny plik wskaźnik pliku dla każdego pliku.
Możesz tylko ponownie użyć tego pliku wskaźnik, jeśli czytasz i piszesz
w różnym czasie.
Istnieje ograniczenie liczby otwartych pliki, które możesz mieć w jednym czasie otwarcia.
Możesz spojrzeć na limit w standardowe We / Wy, w
tym wszystkim jest zdefiniowana stała f open max zależy od tego, na jakim
systemie operacyjnym używasz.
Ale zazwyczaj nie chcesz tworzyć i otwieraj mnóstwo plików na raz.
Pisanie i czytanie plików to kosztowna operacja, ponieważ piszesz na
dysku twardym.
To nie jest tak szybkie, jak pisanie
pamięci, więc zajmuje to trochę czasu i może spowodować twój program być mniej responsywnym.
Nie chcesz mieć 10 pliki otwierają się i
zapisują w 10 plikach jednocześnie.
Aby otworzyć plik, tak by się stało bądź pierwszym krokiem, który
zrobisz, zanim zaczniesz czytać i pisać.
Chcesz więc skojarzyć konkretny plik nazwa
pliku zewnętrznego z całym końcowym wskaźnikiem przez proces nazywane otwarciem pliku.
Sposób otwierania pliku i Widzisz, nazywasz funkcję f open.
Spowoduje to zwrócenie pliku wskaźnik, którego możesz następnie
używać do czytania i pisania.
I znowu wskaźnik pliku to zamierza wskazać określony plik
zewnętrzny znajdujący się na dysku.
F open zajmie nazwa pliku.
Otwarte jest to, co musisz zrobić zanim zaczniesz czytać / pisać.
Zwykle jest to Twoja pierwsza operacja.
Podobnie jak w przypadku większości tych funkcji, wszystkie są zdefiniowane w standardio. godz.
Oto definicja otwartego zaproszenia.
Zobaczysz, że powrót wartość to wskaźnik pliku, to
wszystko to kapsle, struktura pliku.
Więc wszystkie pliki z kapslami.
Wtedy zauważysz, że zajmuje to plik kilka parametrów, wymaga nazwy i
trybu i nie martw się o to ogranicz, to tylko więcej rzeczy z C11.
To naprawdę po prostu przyjmuje charakter wskaźnik do nazwy i trybu.
Pierwszy argument funkcji jest wskaźnikiem do łańcucha,
który jest nazwą pliku, więc to będzie umieszczony w cudzysłowie.
Możesz podać nazwę jawnie lub użyj wskaźnika znakowego zawierającego adres
ciągu znaków.
Więc wszystko to mówi, że możesz utwórz ciąg znaków i przypisz
go do dosłownego tekstu, a następnie przekazać ciąg
do funkcji lub możesz umieścić wewnątrz double cytuje bezpośrednio w wywołaniu funkcji.
Możesz uzyskać nazwę pliku poprzez wiersz poleceń jako
dane wejściowe od użytkownika lub zdefiniuj jest to stały program.
Jeśli to zawsze ten sam plik czytasz i piszesz, a
nazwa nie ma znaczenia, ty można po prostu odnosić się do stałej.
Jeśli twój program jest bardziej elastyczny, to może uzyskać dane wejściowe od użytkownika, aby powiedzieć, co
chcesz przeczytać lub napisać.
Drugi argument do f jest otwarty funkcja to ciąg znaków,
który reprezentuje tryb pliku.
Określa, co chcesz zrobić z plikiem, czy chcesz
go przeczytać, czy chcesz pisać to, czy chcesz do niego dołączyć.
Specyfikacja trybu pliku to ciąg znaków w cudzysłowie,
a pokażę jesteście jednymi z tych, z których będziemy w
końcu często korzystać.
Zakładając, że wywołanie f jest otwarte się powiedzie, zwróci ten
wskaźnik pliku, wszystkie wielkie litery.
A potem możesz użyć tego pliku wskaźnik do wywołania innych funkcji wejścia /
wyjścia w standardowym nagłówku IO, a będziemy przez nie przechodzić, kiedy
będziemy czytać i pisać lub możesz również uzyskać pozycję za
pomocą tego wskaźnika, aby zmienić miejsce, w którym się znajdujesz w pliku.
Jeśli nie można otworzyć pliku z jakiegoś powodu f open
zwróci wartość null.
Więc to, co to oznacza, jest przed tobą zacznij czytać
lub pisać, upewnij się, że wskaźnik nie jest równy null, inny, jeśli czek.
Oto plik tryby, o których wspomniałem.
Pamiętaj, że tryby plików to drugi parametr do otwartego wywołania f.
To właśnie określa, co ty chcesz zrobić z plikiem, a wszystko
to znajduje się w podwójnych cudzysłowach.
Więc jeśli zrobisz w, to znaczy, że chcesz aby otworzyć plik tekstowy do zapisu.
Jeśli zrobisz a, to znaczy, że chcesz aby otworzyć plik tekstowy do dołączenia,
wszystkie zapisy są na końcu pliku.
Jeśli zrobisz r, to się otworzy plik tekstowy do czytania.
Jeśli dodasz plus do któregokolwiek z te, w zasadzie utworzy plik,
jeśli nie istnieje.
Jeśli więc otworzysz plik w plus, otworzy go do aktualizacji i skróci
plik do zera jeśli istnieje lub może utworzyć nowy plik,
jeśli nie istnieje.
Z innymi tak mam zamiar pisać lub czytać um, a
plik musi istnieć.
To samo z plusem, to się otworzy w celu dołączenia, w celu aktualizacji, na
końcu istniejącego pliku lub utwórz plik, jeśli nie istnieje.
I otworzy się r plus plik tekstowy do aktualizacji,
nie utworzy pliku tam, ponieważ będzie pusty.
Więc czytanie jest tylko dla zarówno czytanie, jak i pisanie, gdy
widzisz r plus.
Trochę inny niż drugi plusy, w których faktycznie tworzą
plik, którego nie ma.
Tryb pisania.
Jeśli chcesz napisać do istniejący plik tekstowy
o nazwie myfile. txt, możesz utworzyć wskaźnik pliku, wszystkie wielkie litery.
Ustaw go na null, zainicjuj go null.
A potem może byś tworzył twój plik jako
inny wskaźnik znaku, myfile. txt lub możesz Przekaż to jako pierwszy parametr, a
następnie po prostu powiedz f open.
F otwórz nazwę pliku, a następnie w wewnątrz podwójne cudzysłowy, które otwierają plik do
zapisu i zwracają wskaźnik pliku.
Dlatego masz włączony plik p po lewej stronie zadania.
Następnie chcesz sprawdzić, aby zrobić pewnie, że plik p nie jest równy null.
Bo jeśli jest zerowy, jeśli tak nie udało się otworzyć
z jakiegokolwiek powodu, być może nazwa pliku jest nieprawidłowa albo nie istniał, wtedy nie byłbyś w stanie
do niego pisać.
Więc zawsze chcesz to zrobić f sprawdź i wydrukuj
informacje, jeśli się nie otworzy.
Ten kod otworzy plik i skojarzy
plik z nazwą myfile. txt z Twój plik wskaźników pliku fp.
Tryb w oznacza, że możemy tylko pisać do pliku, nie możesz z niego odczytać.
Jeśli plik o nazwie mój plik że tekst nie
istnieje, wywołanie f open utworzy nowy plik o
tej nazwie, a to jest dla f otwarte z opcją w.
I tak gdy widzieliśmy w poprzednim tryby, w plus utworzy plik, jeśli nie istnieje, ale
istnieje również obcina plik do zera.
Inaczej jest z w.
W stworzy, jeśli tak nie istnieje, ale nie
skróci go do zera.
Więc to jest standardowy sposób otwieranie plików, używając
tego w wewnątrz podwójnych cudzysłowów.
Jeśli podasz tylko nazwę pliku bez specyfikacji ścieżki,
więc to właśnie zrobiliśmy w tym Na przykład ścieżka
do zapamiętania to nazwa katalogów.
Jeśli nie podasz nazwy pliku katalogach, zakłada, że ten plik
znajduje się w bieżącym katalogu gdziekolwiek program jest wykonywany.
Jeśli chcesz faktycznie otworzyć plik w innym miejscu,
w którym faktycznie się nie znajduje katalogu programów, musisz
podać całą ścieżkę.
Nazywa się to ścieżką absolutną.
Zwykle jest to sytuacja, w której nie podajesz ścieżki ścieżka względna, jest względna w stosunku do
miejsca, w którym program jest uruchomiony.
Możesz więc określić jeden z nich, plik bezwzględna lub względna
ścieżka, po prostu upewnij się, że wiesz, gdzie się znajduje i robisz właściwą.
Względne ścieżki są zwykle lepsze ponieważ wtedy nie jest zależne.
Gdyby ktoś się poruszył ten plik nie jest zależny
od tego, gdzie został przeniesiony.
I faktycznie możesz zrobić ścieżkę względną i możesz wrócić do katalogów, więc
możesz zrobić kropkę slash i to jest zależne od miejsca, w którym program
jest uruchomiony, po prostu wracam do kilku katalogów.
Kiedy używasz absolutu ścieżka, faktycznie byłoby to coś
w rodzaju programu z dwukropkiem C. pliki, jeśli korzystasz z systemu Windows.
A jeśli ten plik kiedykolwiek został przeniesiony, rozszerzenie program nie byłby w stanie go otworzyć.
A więc o otwarciu pliku do zapisu łącze do pliku
jest obcinane do zera, a pozycja będzie taka na początku wszelkich istniejących
danych dotyczących pierwszej operacji.
Wszelkie dane, które były wcześniej zapisany w pliku zostanie
utracony i nadpisany przez wszelkie operacje zapisu.
Więc znowu bez dostarczania plus, to po prostu oznacza, że nie
możesz czytać i pisać.
To jest tylko do pisania.
W ma tylko rację.
W plus oznacza, że umiesz czytać i pisać.
Tryb dołączania.
Jeśli chcesz dodać do istniejącego pliku plik tekstowy zamiast go nadpisywać,
możesz określić tryb a.
To zależy.
Spowoduje to umieszczenie pliku na końcu wszelkich wcześniej zapisanych danych.
Jeśli plik nie istnieje, tworzy nowy.
Oto przykład, po prostu zmień drugi parametr, aby był a
wewnątrz cudzysłowów, it doda na koniec myfile. tekst.
I nie zapominaj, że ty powinien zawsze za każdym razem
testować zwracaną wartość pod kątem wartości null.
Zawsze chcesz to zrobić Plik p nie jest równy null.
Po otwarciu pliku w append tryb, wszystkie operacje zapisu
będą na końcu danych w plik w każdej operacji zapisu.
Dołączanie wszystkich operacji zapisu danych do pliku
i nie można zaktualizować istniejącej zawartości w w tym trybie to koniec.
W trybie odczytu możemy otworzyć w górę pliku, aby odczytać plik.
Po prostu używamy r w cudzysłowach.
To jest tylko do odczytu, ty nie można zapisywać do pliku.
Jeśli zrobisz r plus, zrobisz to umieć czytać i pisać.
Więc wygląda na to, że inne połączenia po prostu otwierasz f,
przekazujesz nazwę pliku, a następnie podwójnie r cudzysłowy, które zwracają wskaźnik pliku.
Pozycjonujemy również plik na początek danych.
Jeśli masz zamiar po prostu czytać plik, musi już istnieć.
Nie zamierzasz przeczytaj pusty plik.
Nie ma więc opcji tworzenia plik, którego nie ma, będzie
po prostu pusty, w przeciwnym razie wrócisz plik przeciwnika byłby zerowy.
Jeśli spróbujesz otworzyć plik dla odczytanie go nie
istnieje, zwróci pusty wskaźnik.
Jeśli istnieje i jest pusty, po prostu nie zwrócisz żadnych danych.
Zawsze chcesz sprawdzić wartość zwracana z f open.
Ponownie, czytając to dla za drugim razem to ważne.
Ponieważ jeśli jest to wskaźnik zerowy, Twój program się
zawiesi, zrobi coś złego.
Zmiana nazwy pliku.
Teraz wiemy, jak otworzyć plik.
Otwarcie pliku jest pierwszym operacji, określ tryb
i nazwę pliku.
To daje ci z powrotem plik wskaźnik, którego możesz
teraz użyć do zrobienia innych rzeczy.
Zmiana nazwy pliku to czasami ważne.
To jest bardzo łatwe.
Po prostu użyj funkcji zmiany nazwy.
Przyjmuje stare imię i nowe name jako stałe wskaźniki
znaków i zwraca int.
Zwrócona liczba całkowita będzie być równe zero, jeśli zmiana
nazwy się powiodła, lub niezerowe w przeciwnym razie.
Plik nie może być otwarty kiedy dzwonisz do zmiany nazwy.
W przeciwnym razie to się nie powiedzie ponieważ jest używany, nie możesz zmienić
nazwy pliku, gdy jest w użyciu.
Więc co możesz tutaj zrobić, to możesz po prostu powiedz zmień nazwę, podaj starą nazwę pliku
i nową nazwę pliku.
W tym przykładzie używamy ścieżka do pliku w systemie Windows.
I wiesz, że to okna, bo widzę dwukropek.
Zauważysz również, że plik ukośnik odwrotny występuje dwukrotnie.
Powodem tego jest to, że ukośnik odwrotny to znak specjalny w c.
Lewy ukośnik n jest sprzężeniem zwrotnym linii.
Lewy ukośnik r to powrót karetki.
Więc ukośnik odwrotny ma specjalne znaczenie w programie.
Więc jeśli chcesz faktycznie używać ukośnik odwrotny dla ścieżki w katalogu, co
robi system Windows, ty Muszę zapewnić dwa z nich.
Więc tutaj zmieniamy nazwę plik myfile. txt lokalizujący katalog
tymczasowy.
Zmieniamy jego nazwę na podkreślenie mojego pliku Kopiuj. tekst w katalogu prób.
A jeśli to nie jest równe dla jednego, to się nie powiedzie.
Po prostu drukujemy plik wyjście, które mówi, że zawiodło.
W przeciwnym razie wydruk powiódł się.
To zmieni nazwa mojego pliku. txt w katalogu tymczasowym do mojej kopii pliku.
Jeśli ścieżka do pliku jest nieprawidłowa lub plik nie istnieje, nie będzie
można zmienić jego nazwy.
Możesz także zamknąć plik i chcesz aby to zrobić za każdym razem, gdy otwierasz plik.
Więc kiedy skończysz z plik, chcesz powiedzieć
systemowi operacyjnemu, aby zwolnił ten plik.
Pamiętaj, jest limit ile plików można
otworzyć w danym momencie.
Możesz to zrobić dzwoniąc funkcja f close.
F close akceptuje plik wskaźnik jako argument.
Pamiętaj, wskaźnik pliku reprezentuje plik.
Zwraca eof.
Eof to int.
Zwraca eof, jeśli wystąpi błąd.
Eof to postać specjalna nazywany znakiem końca pliku.
Jest zdefiniowane w standardio. godz jako ujemna liczba całkowita.
Zwykle jest równoważny do negatywnej.
Jeśli zamknięcie zakończyło się sukcesem, zwróci zero.
Więc możesz sprawdzić eof za nieudane.
Po prostu powiedz f close pass in the wskaźnik, możesz następnie ustawić wskaźnik
na null i wynik wywołania f blisko jest to, że połączenie między
wskaźnikiem, plikiem p a plik fizyczny jest uszkodzony.
Nie można już używać pliku P. aby uzyskać dostęp do pliku
w celu odczytu, zapisu, dołączania lub zmiany nazwy.
Jeśli plik jest zapisywany, aktualna zawartość bufora wyjściowego jest zapisywana do
pliku upewnij się, że dane nie zostaną utracone.
Więc nie masz żadnych problemów z integralności danych,
nie zamkniesz pliku, jeśli tak było w innym wątku.
Więc to jest bezpieczne dla wątków.
Nie rozmawialiśmy o wątkach, to bardziej zaawansowana koncepcja.
Ale to jest miejsce, w którym możesz mieć wiele punkty wykonawcze w programie.
To dobra praktyka programistyczna aby zamknąć plik natychmiast po
zakończeniu, tak jak dobrą praktyką programistyczną jest
zwolnienie pamięci po zakończeniu z nim, to samo do zamykania plików.
Chroni przed utratą danych wyjściowych.
Musisz także zamknąć plik zanim spróbuje zmienić jego nazwę
lub go usunąć, musi to zrobić być zamknięty, nie można go otworzyć.
Co powiesz na usunięcie pliku.
Możesz usunąć plik przez wywołanie funkcji usuwania.
Jest to również deklarowane w standardio. godz.
Wszystkie operacje na plikach są deklarowane w standardzie. ioh.
Zawsze możesz na to spojrzeć plik nagłówkowy, jeśli chcesz,
gdziekolwiek są zainstalowane pliki nagłówkowe c.
Więc po prostu powiedz usuń nazwa pliku.
Tutaj nie musisz użyj wskaźnika pliku.
Możesz po prostu powiedzieć, ponieważ plik nie musi
być faktycznie otwarty, aby go usunąć.
To samo dotyczy zmiany nazwy, ponieważ w rzeczywistości nie chcesz, aby pliki były otwarte, ponieważ
zmiana nazwy lub usunięcie nie powiedzie się.
Usunie plik który ma nazwę myfile. txt z bieżącego
katalogu.
To zapewnia ścieżkę względną.
Będzie szukał tego pliku gdziekolwiek program jest wykonywany.
W przeciwnym razie musisz zapewniają absolutną ścieżkę.
Nie można otworzyć pliku, gdy Ty spróbuj go usunąć, tak jak zmiana nazwy.
Zawsze powinieneś dokładnie sprawdzić z operacjami, które usuwają pliki.
Możesz zniszczyć swój system, jeśli tego nie zrobisz.
Usunięcie jest bardzo kosztowne, bardzo niebezpieczna operacja.
Usuwanie plików może powodować problemy.
Więc uważaj.
Wszystkie informacje w tym wykładzie miał do czynienia z dostępem do plików, jak
można otwierać pliki, które jest tym, co musisz zrobić, zanim zaczniesz
czytać i pisać, a także jak Ty może usuwać pliki i zmieniać ich nazwy, a następnie
zamykać je, gdy skończysz ich używać.
Wszystko jest oparte poza tym wskaźnikiem pliku.
Więc zrozum ten wskaźnik pliku i strukturę, którą zawiera.
Całkiem przydatne rzeczy.
Standardowy nagłówek io zawiera wszystkie świetne informacje.
Jedziemy na kilka następnych wykładów
rozmawiać o czytaniu i zapisywaniu do plików tekstowych, a właściwie dodawaniu dane lub dodawanie lub odczytywanie ich.
Dziękuję Ci. Mam nadzieję, że to było pomocne.