Pliki

Oczywiście samo programowanie i tworzenie aplikacji jest niczym bez dołączania zewnętrznych plików lub baz danych w których znajdują się dane do obróbki. W tym przykładzie pokażę jak odczytać plik tekstowy. Aby tego dokonać należy dołączyć bibliotekę wejścia\wyjścia wpisując:

using namespace System::IO;

Teraz możemy korzystać z bibliotek działających na plikach. Nasza aplikacja jest prosta po naciśnięciu przycisku ma się odczytać plik.txt, który jest umieszczony w tym samym katalogu co sam program. Wystarczy na formatkę wrzucić przycisk i textbox, tak jak na poniższym obrazku:

W pliku wpisałem "o To nasz Plik z śćźż", aby pokazać, że zostaną odczytane odpowiednie znaki. Teraz wystarczy napisać nasz kod i dołączyć go do wywołania przycisku. Całość powinna wyglądać tak:

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
 System::String^ tekst;
 StreamReader^ plik = gcnew StreamReader("Plik.txt",System::Text::Encoding::Default);
 tekst = plik-> ReadToEnd();
 textBox1-> Text = tekst;
 plik->Close();
 }

Na uwagę zasługuje typ danych StreamReader, który jest strumieniem czytającym dane. Posiada on różne metody do odczytu danych:

int Read() - Bez parametrów, czyta pojedynczy znak;

int Read(buffor,start,długość) - czyta ciąg znaków i umieszcza je w tablicy buffor;

System::String ReadToEnd() - czyta cały tekst;

System::String Readline() - czyta linie.

Aby zmienić program na odczyt linijka po linijce wystarczy zamienić:

tekst = plik-> ReadToEnd();
textBox1-> Text = tekst;

Na:

while (tekst=plik->ReadLine()){
textBox1->AppendText(tekst+System::Environment::NewLine)}

Metoda ReadLine odczytuje dane i przenosi znak karetki do następnej linii, tak więc kolejne wykonanie pętli pobiera automatycznie następną linie, aż do momentu, gdy natrafi na koniec pliku i pętla się zatrzyma.

Widzimy także, że strumień pobierany jest z parametrem System::Text::Encoding::Default czyli zostaje pobrane standardowe kodowanie, dla danego systemu. Jeśli chcemy pobierać pliki z okreslonym kodowaniem, to wystarczy wpisać np. System::Text::Encoding::GetEncoding("ISO-8859-2") pobieranie strumienia będzie odrazu kodowane za pomocą ISO 8859 2. Nazwy kodowań można sobie odczytać z NotePad++, albo poszukać w google.

Oczywiście każdy otwarty plik należy zamknąć za pomocą metody Close().