Odczytywanie plików i stdin
Przekazuj dane wejściowe strumieniowo do programu.
Odczytywanie plików i stdin to bezpłatna lekcja Zig Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Zig Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Zig Academy zawiera 4 lekcji w sumie.
Narzędzia pobierają dane wejściowe
Przydatne CLI zazwyczaj coś odczytuje: wskazany przez Ciebie plik albo tekst przekierowany do programu. Zig udostępnia jasne i jawne sposoby obsługi obu przypadków. 📥
Otwórz plik według ścieżki
Użyj std.fs.cwd, aby pobrać bieżący katalog, a następnie openFile, aby otworzyć względem niego ścieżkę do odczytu.
const file = try std.fs.cwd().openFile(path, .{});Zawsze zamykaj to, co otwierasz
Otwarty plik jest zasobem, którego jesteś właścicielem. Połącz otwarcie z defer file.close(), aby zasób został zwolniony niezależnie od sposobu zakończenia funkcji.
defer file.close();Odczytaj cały plik
Aby wczytać wszystko naraz, wywołaj readToEndAlloc, przekazując alokator i limit rozmiaru. Funkcja zwraca bajty jako należący do Ciebie wycinek.
const data = try file.readToEndAlloc(a, 1024 * 1024);Zwolnij bajty później
Zwrócony wycinek znajduje się na stercie, więc jesteś jego właścicielem. Dodaj defer a.free(data), aby zwolnić bufor po zakończeniu pracy z nim.
defer a.free(data);Limit rozmiaru jest zabezpieczeniem
Argument określający maksymalną liczbę bajtów chroni przed zajęciem całej pamięci przez ogromny plik. Wybierz limit odpowiedni dla realistycznych danych wejściowych Twojego narzędzia.
Pobierz standardowe wejście
Aby odczytywać przekierowany tekst, użyj std.io.getStdIn. Zwraca ono plik podobny do tego, który został otwarty przez Ciebie, więc można zastosować te same wywołania odczytu.
const stdin = std.io.getStdIn();Odczytaj całe stdin
Pobierz czytnik z stdin i wywołaj readAllAlloc. Funkcja zbiera wszystko, co zostało przekierowane, aż do końca wejścia, do jednego należącego do Ciebie wycinka.
const input = try stdin.reader().readAllAlloc(a, 1024 * 1024);Odczytuj wiersz po wierszu
W przypadku pracy strumieniowej readUntilDelimiterOrEof czytnika pobiera po jednym wierszu do bufora i zwraca null po zakończeniu danych wejściowych.
const line = try r.readUntilDelimiterOrEof(&buf, '\n');Buforuj dla szybkości
Każdy surowy odczyt może być wywołaniem systemowym. Owiń czytnik w std.io.bufferedReader, aby wiele małych odczytów połączyć w mniejszą liczbę szybszych operacji.
var br = std.io.bufferedReader(file.reader());Plik czy potok — ten sam kod
Ponieważ zarówno plik, jak i stdin udostępniają reader, logika analizowania danych nie musi wiedzieć, który z nich otrzymała. To przejrzysty i wielokrotnego użytku projekt. ✨
Szybkie sprawdzenie
Przypomnij sobie, jak zamieniasz bajty pliku na coś, czego możesz użyć.
Podsumowanie
Otwierałeś pliki za pomocą openFile, odczytywałeś je w całości lub wiersz po wierszu, pobierałeś tekst ze stdin i zwalniałeś każdy bufor. Dane wejściowe obsłużone. 🎯
Często zadawane pytania
Czy lekcja „Odczytywanie plików i stdin” jest bezpłatna?
Tak — pełny tekst „Odczytywanie plików i stdin” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Zig Academy, przejdź na CoddyKit PRO. Kurs Zig Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Odczytywanie plików i stdin”?
Przekazuj dane wejściowe strumieniowo do programu. Ćwiczysz Zig Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Zig Academy?
Nie wymagamy żadnego doświadczenia. Zig Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Odczytywanie plików i stdin”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Zig Academy?
Tak. Każda lekcja Zig Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Odczytywanie argumentów wiersza poleceń
- Odczytywanie plików i stdin
- Zapisywanie danych wyjściowych i kody zakończenia
- Pakowanie i wydawanie pliku binarnego