Odczyt i zapis danych z pliku w C++, Java i Python

Nie kojarzę żadnego maturalnego zadania, na którym nie wymagano by stworzenia programu pracującego na danych z pliku tekstowego. Jeśli nie potrafisz tego zrobić to nie łudź się, że zdobędziesz jakiekolwiek punkty z zadania na program. W tym wpisie pokażę jak zrobić odczyt i zapis danych z pliku w językach C++, Java oraz Python.

Odczyt danych z pliku tekstowego

W celu odczytania danych z pliku tekstowego posługiwać będziemy się obiektami klasy fstream w języku C++. W Javie posłużymy się obiektem typu BufferedReader, a Pythonie użyjemy wbudowanej funkcji open. Zakres wiedzy wymaganej na maturze z informatyki nie zahacza właściwie o programowanie obiektowe, więc dla uproszczenia powiedzmy sobie, że będziemy używać zmiennych plikowych i przypisanych im funkcji.

Otwieranie pliku – C++ i Python

W pierwszej kolejności tworzymy zmienną plikową, postępując analogicznie do deklarowania zmiennej liczbowej czy tekstowej.Następnie musimy otworzyć plik, aby mieć do niego jakikolwiek dostęp. W C++ i Python użyjemy metody open (w C++ jest ona wbudowana w zmienną plikową, zaś w Pythonie jest ona dostępna globalnie). Metody te przyjmują dwa argumenty. Pierwszym jest nazwa pliku wraz z rozszerzeniem .txt podana jako łańcuch znaków, a drugim tryb otwarcia pliku. W tym przypadku jest to tryb input (ang. wejście – w sensie do pliku źródłowego) w postaci ios::in w C++ oraz „r” w Pythonie. W języku C++ niezbędne jest dodanie do pliku biblioteki fstream za pomocą dyrektywy preprocesora #include <fstream>.

Otwieranie pliku – Java

Nieco inaczej sytuacja wygląda w języku Java. Tutaj najpierw deklarujemy zmienną plikową za pomocą new File(„ścieżkadopliku.txt”). Następnie wypada sprawdzić, czy podany plik w ogóle istnieje. Jeżeli wszystko jest OK, to tworzymy zmienną typu BufferedReader. Tworząc ją korzystamy również z obiektu FileReader, w którym wskażemy plik.

Otworzyliśmy plik – co dalej?

Następnie należy sprawdzić, czy w ogóle udało się otworzyć plik. Jest kilka możliwości. Metod sprawdzania poprawności otworzenia pliku jest kilka, ale ja nie będę się rozdrabniał i pokażę wam czego sam używam:

C++

Java

Python

Czytanie zawartości pliku

C++

Z pliku tekstowego w C++ zazwyczaj czytamy w ten sposób, że pobieramy każdą kolejną wartość oddzieloną białymi znakami. To znaczy, że nieważne, czy wartości będą oddzielone enterem, tabulatorem, kilkoma spacjami i tak odczytana zostanie ta wartość po białych znakach. No dobra ale jak to zrobić? Otóż wystarczy stworzyć zmienną typu string, int itd (w zależności od potrzeb) i zadziałać tak samo jak przy obiekcie cin, tzn.:

Program pobierze z pliku daną wartość i zapisze ją do naszej zmiennej.

Java i Python

W języku Java i Python czytamy cały wiersz do zmiennej. W obu przypadkach wiersz zostanie wczytany jako zmienna tekstowa. Jeżeli chcemy więc odczytać liczby z pliku, to musimy najpierw je odpowiednio przekonwertować.

Wczytywanie w pętli

Jeżeli do odczytania mamy więcej niż jedną daną to możemy użyć pętli. Najwygodniejsza będzie pętla while w Javie i C++ oraz pętla for w Pythonie.

W tym przypadku program będzie wypisywał każdą kolejną daną z pliku, aż do jego końca.

grupa wsparcia matura z informatyki

Zapis danych do pliku

C++ i Python

Na początku postępujemy podobnie jak to miało miejsce w przypadku odczytu danych z pliku. Tworzymy zmienną plikową i korzystamy z open(). Jednakże tym razem zamiast trybu input użyjemy trybu output (ang. wyjście, w sensie z pliku źródłowego).

W C++ zapisujemy do pliku tak samo, jak to robimy w przypadku wypisywania w konsoli. Z tą malutką różnicą, że zamiast cout wpisujemy nazwę zmiennej plikowej. W Pythonie posłużymy się metodą write().

Java

W przypadku Javy również tworzymy zmienną typu File. Następnie jednak korzystamy z obiektu BufferedWriter. Inicjalizujemy go za pomocą obiektu FileWriter, który wskazuje plik.

Następnie, podobnie jak w Pythonie, korzystamy z metody write():

Zamykanie pliku

Zarówno w przypadku odczytywania danych, jak i zapisywania należy pamiętać o zamknięciu pliku, jeżeli nie mamy w nim nic więcej do roboty. Dzięki temu ustrzeżemy się problemów. Plik zamykamy w następujący sposób:

Odczyt i zapis danych z pliku C++, Java, Python

Pozwoliłem stworzyć sobie krótkie zadanie, na którym przedstawię całą wiedzę zawartą powyżej. Mamy stworzyć programy, które wypiszą zarobki pana Z w poszczególnych miesiącach podane w pliku zarobki.txt oraz zsumuje je i zapisze w nowym pliku.

Tutaj macie link z danymi i kodem źródłowym.

C++

Java

Python

You Might Also Like
1 Comment
Dodaj komentarz

icon