Mi a különbség a FileInput/OutputStream és a RandomAccessFile osztályok között?

0 értékelés
91 megtekintés
Franek (4 pont) kérdezte Jan 27.
A kérdés magától értetődő, vonatkozik mindenféle adat fájlból beolvasására és fájlba kiírására. Kiváltható-e az egyik a másikkal?

1 Válasz

0 értékelés
wia Haladó Felhasználó (201 pont) válaszolta meg Jan 28.
Franek kiválasztva Jan 28.
 
Legjobb válasz
Szia,

A FileInputStream és FileOutputStream szekvenciális fájl olvasásra és írásra használatos.

Ez azt jelenti hogy ha egy szekvenciális fájl közepéből szeretnél olvasni valamit (Read), akkor gyakorlatilag olvasgatnod kell amíg el nem jutsz a szükséges adatig. (vagy ha tudod hol kell keresni az adatot offset-et lehet használni)

A szekvenciális fájlba írás csak úgy lehetséges, ha a végére hozzáfűzöd az új adatokat (Append), vagy teljesen újraírod a fájlt (Write, Rewrite) (ha esetleg a már létező részt szeretnéd módosítani)

A RandomAccessFile  előnye, hogy tudsz pozicionálni benne, így nem szükséges végigolvasni a fájlt ameddig eljutsz a kívánt adatig, illetve bele tudsz írni a közepébe, anélkül, hogy az egészet újra kelljen írnod.

Az hogy kiválthatja-e egyik a másikat az meg nézőpont/felhasználás kérdése. Ha változó adatokkal dolgozol akkor valószínű, hogy a RandomAccessFile a jobb választás, ha csak egyszer kell kiírni valamit ami várhatóan nem módosul (pl Log adatok), akkor a szekvenciális lenne szerintem a kézenfekvőbb.
Franek (4 pont) szólt hozzá Jan 28.
Szia, köszi a választ. Olyan szélsőséges eset fennállhat, amikor csak az egyik használható?
wia Haladó Felhasználó (201 pont) szólt hozzá Jan 28.
Nézd a programozásban elég sok mindent meg lehet oldani így is úgy is, a fő kérdés, hogy mennyire gazdaságos, egyszerű használni a későbbiekben. (programozásban általában időben mérhetőek a dolgok, pl fejlesztési, futási, javítási stb)

Ha nézzük azt a példát, hogy ha én meg szeretném tenni a Berlin-Moszkva távolságot, akkor megtehetném ezt autóval, vagy repülővel is (meg mással is).  Több kérdés is felmerülhet, hogy olcsobban szeretném, esetleg gyorsabban, de az is lehet hogy épp az útba eső városokat szeretném megnézni.

Szóval a kérdések melyeket neked kellene megválaszolnod magadnak illetve felmérned:
 - Szükséges-e hogy gyors legyen?
 - Újrahasznosítható-e?
 - Könnyen karbantartható-e?

Szóval erre nem akarok neked szélsőséges eseteket felsorolni
Franek (4 pont) szólt hozzá Jan 28.
Értem amit írsz,  és teljesen egyetértek vele. A kérdést csupán elméleti síkon tettem fel, mert először belegondolva nem tudtam kitalálni(!) olyan helyzetet, ahol kizárólag az egyikkel lehet megoldani az adott problémát. Mindenesetre köszi a tanácsokat.
...