Hirdetés

Új hozzászólás Aktív témák

  • thon73

    tag

    válasz Karma #1178 üzenetére

    Hadd folytassam még az elmélkedést:
    Mi a helyzet a RandomAccessFile() eléréssel? Ott nem tudok stream-et használni, vagy nem tudok ugrálni a file-ban.
    Vegyünk egy egyszerű példát: sd-kártyára mentett, UTF-8 kódolású, de igen hosszú szöveg egy részét szeretném beolvasni, és a képernyőre írni. (Vagyis egy egyszerű olvasóprogram.) Korábbi olvasásból tudom, hogy hol vannak a bekezdéshatárok, így a feldolgozást tudom a szöveg "közepén" kezdeni.

    Ha az előző logikát követem, akkor kell készítenem egy saját byte-stream-et, mely a bemenetét a raf.read()-ből veszi, és azt az előző módon adja a konverternek. Ennek az az előnye, hogy minden, android által ismert dekódolást elvégeztethetek.

    Vagy - ha biztos vagyok abban, hogy csak BasicMultilingualPlane-t használó Utf8 szövegem van - mégiscsak egyszerűbb magát a decoder-t megírni. Az pont a szükséges byte mennyiséget olvassa ki a forrásszövegből, és karakterenként visszaadja.

    Vagy (ezt még nem csináltam): beolvasok egy buffernyi byte-ot, majd valamekkora részt feldolgozok belőle. A végén szinte biztosan egy félbevágott karakter lesz. Átpozícionálom a beolvasást a feldolgozott rész végére, és megyek tovább. Vagy a levágott részeket beteszem a puffer elejére, és onnét folytatom az olvasást.

    Mindegyik esetben egy jelentős saját részt kell alkotni, holott egy igen triviális feladatról van szó. Ezt meg tudom kerülni valahogy szabványos rutinokkal?
    Ill. a fenti megközelítések közül melyik lenne szerintetek a legeffektívebb/legegyszerűbb??

    ((Az előzőekben egy backup-ként szereplő exportról beszéltünk, ahol a stream kiváló megoldás, mert nem kell benne ugrálni. Az utóbbi egy korábbi probléma, ahol nem ez a helyzet. De kíváncsi lennék a véleményetekre.))

Új hozzászólás Aktív témák