Avatar billede jespersahner Nybegynder
09. november 2004 - 11:45 Der er 4 kommentarer og
1 løsning

DataInputStream, RandomAccessFile og buffer-indlæsning

Jeg ønsker at indlæse nogle data fra en fil, som indeholder tekst og tal (herunder såvel int's som double's) i et fast format. Filen er en binær fil.

Læsning kan foretages med DataInputStream, f.eks.:
DataInputStream dis=new DataInputStream(new FileInputStream("fil.dat"));

Ved at indskyde BufferedInputStream går det betragteligt hurtigere:
DataInputStream dis=new DataInputStream(new BuferedInputStream(new FileInputStream("fil.dat")));

Er dette i øvrigt den "rigtige" måde at skrue indlæsningen sammen på - det virker noget tungt at se på.

Ønsker jeg nu at læse fra et vilkårligt sted i filen, kan jeg bruge RandomAccessFile, f.eks.:
RandomAccessFile raf=new RandomAccessFile("fil.dat","r");

Mit spm. er nu: Kan RandomAccessFile kombineres med buffer-indlæsning?

Jeg er klar over, at ideen med RandomAccessFile netop er at læse vilkårligt fra filen, hvorfor indlæsning i en buffer måske ikke umiddelbart er oplagt. På den anden siden kan der være situationer, hvor man godt nok skal læse fra et vilkårligt sted men dog alligevel skal læse en stor mængde data ind netop derfra.
Avatar billede arne_v Ekspert
09. november 2004 - 12:49 #1
Ja - 3 constructor oven i hinanden er "normalt".

Nej - du kan ikke bygge en BufferedInputStream ovenpå en RandoMAccessFile.
Avatar billede jespersahner Nybegynder
09. november 2004 - 13:07 #2
->arne_v: Ok. Er der ikke nogen måde, hvorpå man selv kan placere pointeren i forbindelse med InputStream, eller er man altid nødt til at læse sekventielt?
Avatar billede arne_v Ekspert
09. november 2004 - 13:23 #3
InputStream er sekventiel.
Avatar billede arne_v Ekspert
21. november 2004 - 20:10 #4
OK ?
Avatar billede jespersahner Nybegynder
21. november 2004 - 21:03 #5
->arne_v: Fuld tilfredshed :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester