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.