Odczyt i zapis danych - metoda binarna

Na razie odczytywaliśmy tylko pliki o roszrzeniu txt. Teraz odczytamy plik binarnie - czyli teraz będziesz mógł odczytać różne pliki np. pdf. Ale może najpiew zapoznaj się z poniższym programem. Poniżej wytłumaczę kolejne instukcje.

38.cpp


1: #include<iostream>
2: #include<conio.h>
3: #include<cstdio>
4: #include<fstream>
5:
6: using namespace std;
7:
8: int main()
9: {
10: int length;
11: char* dane;
12:
13: ifstream is;
14: is.open("in.txt", ios::binary);
15: is.seekg(0, ios::end); //przesunąc sie na koniec pliku aby długośc odczytać
16: length = is.tellg(); //zwraca aktualną pozycję w pliku
17:
18: is.seekg(0,ios::beg); //przesuwa się na początek pliku
19: dane = new char[length];
20: is.read(dane,length);
21: is.close();
22:
23: ofstream os;
24: os.open("out.txt", ios::binary | ios::out); //"c:\\temp\\in.xlsx;
25: os.write(dane, length);
26: os.close();
27:
28:
29: getch();
30: }


Patrząc od góry dodałem nową bibliotekę cstdio, która pozwili nam w późniejszej części przesuwać się pomiędzy początkiem a końcem pliku.

W 11.linii tworzymy tablicę znakową - char, lecz jest to tablica dynamiczna, to znaczy, że jej ostateczny rozmiar możemy ustalić później a także w dowolnym miejscu możemy usunąć ją z pamięci operacyjnej. Mają one więcej możliwości ale o tym później. W tym przykładzie zachowuje się tak jak normalna tablica.

Instrukcja is.open("in.txt", ios::binary); otwiera nam plik, niekoniecznie txt i pozwala na dostęp do każdego bitu tego pliku.
Linia 15. przesuwa się po pliku, aż na sam jego koniec, a nastęnie funkcja tellig() zwraca do zmiennej length długość pliku , tak abyśmy wiedzieli jaką wielką zadeklarować tablicę znaków.

Teraz najważnejsza część programu: is.read(dane,length); - w tym miejscu cały plik zostaje odczytany binarnie i umieszczony w tablicy char. Lustując plik txt ze zdaniem, w kolejnych komórkach tablicy znajdują się kolejne znaki. Znając operacje na znakach m.in. kod ASCII możemy dowolnie zaszyfrować i odszyfrować różne pliki.

Linie 23 - 26 zapisują binarnie naszą tablicę do innego pliku.

Czyli jak już pewnie wywnioskowałeś nasz program na razie kopiuje plik i zapisuje go pod inną nazwą.

© Mateusz Ratajczak         www.commitcode.pl