Sobes.tech
Junior — Middle

Milline on erinevus voogude vahel, mis töötavad baitandmetega, ja nende vahel, mis kasutavad failisüsteemi?

sobes.tech AI

Vastus AI-lt

Java-s on erinevat tüüpi voogusid (Streams), ning on oluline mõista erinevusi voogude vahel, mis töötavad baitandmetega ja failisüsteemi kasutavate voogude vahel.

  1. Baitandmete voog (InputStream/OutputStream):

    • Töötavad puhtate baitidega.
    • Kasutatakse binaarandmete lugemiseks ja kirjutamiseks, näiteks pildid, heli, video või mis tahes failid binaarformaadis.
    • Näited: FileInputStream, BufferedInputStream, ByteArrayInputStream.
  2. Failisüsteemi kasutavad vood (Reader/Writer):

    • Töötavad märkidega (tekstandmetega).
    • Mõeldud tekstifailide lugemiseks ja kirjutamiseks, võttes arvesse kodeeringut.
    • Näited: FileReader, BufferedReader, FileWriter.

Peamine erinevus on selles, et baitvood töötavad töötlemata baitidega, samas kui märkvood töötavad märkidega, mis muudab tekstiga töötamise lihtsamaks ja arvestab kodeeringuid.

Näide faili lugemisest baitvoo abil:

try (FileInputStream fis = new FileInputStream("file.bin")) {
    int data;
    while ((data = fis.read()) != -1) {
        // baitandmete töötlemine
    }
}

Näide faili lugemisest märkvoo abil:

try (BufferedReader reader = new BufferedReader(new FileReader("file.txt"))) {
    String line;
    while ((line = reader.readLine()) != null) {
        // rea töötlemine
    }
}

Seega, voolu valik sõltub andmetüübist ja ülesandest.