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.
-
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.
-
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.