Zapis danych do pliku pozwala przechowywać np. ustawienia konfiguracyjne. Jest bardzo podobny do wypisywania danych na konsolę. W tym jednak przypadku dane są przesyłane w inne miejsce. W tym artykule zostaną przedstawione dwa sposoby na wczytanie zawartości dowolnego pliku.
Chcemy na dysku zapisać następujący plik w tym samym folderze w którym znajduje się program:
W celu zapisania danych na dysku należy mieć określony tekst do zapisu oraz ścieżkę dostępu. Oto przykładowy kod, który zapisze określony wcześniej tekst do pliku test.txt. Zapisywany w ten sposób plik można odczytać innym edytorem tekstu.
(1.) W zadeklarowanym tekście do zapisu zostały użyte znaki specjalne "\r\n", które symbolizują znak nowej linii. (2.) Ścieżka zapisu zawiera tylko nazwę pliku i rozszerzenie - w ten sposób plik zapisze się tam gdzie program.
Przypuśćmy, że każda linijka tekstu jest przechowywana/generowana oddzielnie. Wtedy nie opłaca się dodatkowo tworzyć nowy łańcuch znaków, a następnie go zapisywać. Lepiej byłoby pobierać kolejny fragment pliku i od razu zapisywać go na dysk. Pozwoli to zwiększyć wydajność wykorzystania sprzętu.
Tego typu elastyczne zapisywanie danych do wymaga użycia strumienia danych dostępnego jako klasa StreamWriter. Na takim obiekcie można korzystać z dwóch metod identycznych z konsolowym odpowiednikiem Write() oraz WriteLine().
Kod został umieszczony wewnątrz klauzuli try .. catch na wypadek wystąpienia wyjątku. (2.) Otwórz plik do zapisu, a następnie: (3. - 5.) zapisz kolejne linijki tekstu. Ostatnie dane zostały zapisane przy pomocy funkcji Write(), aby nie tworzyć na końcu pliku dodatkowego znaku nowej linii. Po zapisaniu wszystkich danych należy pamiętać o (6.) zamknięciu dostepu do pliku.
Każdy ze sposobów zapisu ma swoje wady jak i zalety. Wszystko zależy od przeznaczenia programu oraz sposobu przechowywania danych. Zwykle jednak korzysta się z drugiej metody, która zapewnia zdecydowanie większą elastyczność polegającą na możliwości zapisu danych do pliku tekstowego.
Napisz program, który wczyta od użytkownika liczbyz konsoli do zapisania do pliku tekstowego. Wczytywanie kolejnych liczb powinno się zapisać w momencie wczytania liczby 0. Na końcu pliku powinna znajdować się suma wszystkich wczytanych liczb. Przetestuj działanie programu.
Przykładowo jeśli użytkownik będzie wprowadzał następujące liczby na konsoli:
Wtedy program powiniene zapisać do pliku następujące dane: