U programiranju često želimo da sačuvamo podatke kako bi ostali dostupni i nakon što se program završi.
To se radi pomoću datoteka (fajlova).

U datoteke možemo upisivati i iz njih čitati različite vrste podataka.
Najčešće se koriste dve vrste datoteka:

  • Tekstualne datoteke – podaci se čuvaju kao običan tekst (čovek može da ih pročita u Notepadu).

  • Binarne datoteke – podaci se čuvaju u obliku bajtova (računar ih razume, ali čovek ne).

Primeri iz stvarnog života
  • Tekstualni fajl može biti spisak učenika, dnevnik, ili rezultati testova.

  • Binarni fajl može biti slika, audio zapis, ili čuvanje podataka o objektima u programu (npr. igra čuva stanje).


Binarne datoteke

Binarne datoteke čuvaju podatke u obliku bajtova (npr. slike, zvuk, strukture). Takve datoteke ne možemo čitati kao običan tekst.


🗂️ Primer : brojevi.dat

Ovde ćemo koristiti datoteku „brojevi.dat“ kao primer binarne datoteke.
Za razliku od tekstualne datoteke (npr. podaci.txt), binarna datoteka ne sadrži čitljiv tekst, već podatke zapisane u obliku bajtova.

To znači da se brojevi ne čuvaju kao cifre „1“, „2“, „3“… već kao njihova binarna predstava koju računar razume.


📗 U C jeziku

Koristimo fwrite() i fread().

🔹 Primer: upis i čitanje brojeva
#include <stdio.h>

int main() {
int i; FILE *fajl = fopen("brojevi.dat", "wb"); // write binary int niz[3] = {10, 20, 30}; fwrite(niz, sizeof(int), 3, fajl); fclose(fajl); // Čitanje fajl = fopen("brojevi.dat", "rb"); // read binary int ucitano[3]; fread(ucitano, sizeof(int), 3, fajl); fclose(fajl); for (i = 0; i < 3; i++) printf("%d ", ucitano[i]); return 0; }

📄 Objašnjenje:

  • "wb" znači write binary, "rb" znači read binary.

  • fwrite() upisuje podatke iz memorije u datoteku.

  • fread() ih ponovo čita nazad.


Nakon pokretanja programa pokušati otvoriti fajl koji je kreiran (nalazi se tamo gde i vaš projekat). 

🔹 Objašnjenje (C):
int niz[3] = {10, 20, 30};
fwrite(niz, sizeof(int), 3, fajl);

Brojevi 10, 20 i 30 upisuju se u datoteku brojevi.dat kao niz bajtova, npr:

00001010 00010100 00011110 ...

(kod realnog prikaza to su nečitljivi simboli).

Ako pokušamo da otvorimo datoteku brojevi.dat u Notepadu, videćemo samo nasumične znakove, jer Notepad pokušava da prikaže bajtove kao slova.

Predlog: Otvorite fajl pomoću:  Online binary file viewer


📗 U C# jeziku

Koriste se klase BinaryWriter i BinaryReader.

🔹 Primer: upis i čitanje brojeva
using System;
using System.IO;

// namespace ... class Program { static void Main() { int[] brojevi = { 10, 20, 30 }; // Upis u binarnu datoteku using (BinaryWriter bw = new BinaryWriter(File.Open("brojevi.dat", FileMode.Create))) { foreach (int x in brojevi) bw.Write(x); } // Čitanje iz binarne datoteke using (BinaryReader br = new BinaryReader(File.Open("brojevi.dat", FileMode.Open))) { while (br.BaseStream.Position < br.BaseStream.Length) Console.Write(br.ReadInt32() + " "); } } }

📄 Objašnjenje:

  • BinaryWriter.Write() upisuje podatke kao bajtove.

  • BinaryReader.ReadInt32() čita jedan po jedan broj iz fajla.


🧩 Dodatni zadatak: Istražiti datoteku brojevi.dat
  1. Pokrenuti program koji upisuje brojeve u binarnu datoteku brojevi.dat.

  2. Zatim pronaći datoteku u folderu projekta i otvoriti je u programu Notepad (ili bilo kom uređivaču teksta).

  3. Šta vidite u datoteci?

  4. Odgovoriti na pitanja:

    1. Da li vidite brojeve 10, 20 i 30 kao tekst?

    2. Kako izgledaju podaci u datoteci?

    3. Zašto ih računar ipak može tačno pročitati nazad u programu?

    4. U čemu je razlika između otvaranja datoteke „brojevi.dat“ i „podaci.txt“?


✅ Rešenje (objašnjenje):
  1. U datoteci neće se videti brojevi 10, 20, 30 — umesto njih biće nečitljivi simboli, jer su upisani u binarnom obliku.

  2. Podaci izgledaju kao nasumični znaci (npr. ▒☺♦), zato što ih Notepad pokušava prikazati kao slova, a oni to nisu.

  3. Računar čita binarnu datoteku po bajtovima i zna kako da svaki bajt pretvori nazad u broj.

  4. „brojevi.dat“ je binarna datoteka (računarski čitljiva), dok je „podaci.txt“ tekstualna datoteka (čovek može da je čita).

Last modified: Friday, 31 October 2025, 4:31 PM