Zapis do pliku przy użyciu RandomAccessFile

0

Witam!
Chcę napisać program, któremu podam pewną liczbę całkowitą N np. 5. Następnie on zapisze tą liczbę do pliku przy pomocy klasy RandomAccessFile. Następnie zapisze N dowolnych liczby zmiennoprzecinkowych double po tym jakiś tekst np. "Przykładowy tekst" a na koniec średnią z tych 5 liczb double. Wszystko za pomocą klasy RandomAccsessFile. Robię to tak:
Wczytanie tej liczby N np N=5;

try{
            RandomAccessFile rf = new RandomAccessFile("src" + File.separator + "wyjscie.dat","rw");
            Random generator = new Random();
            try{
                rf.write(n);
                s=0;
                for(int i=1;i<=n;i++){
                    a = generator.nextDouble();
                    s=s+a;
                    rf.writeDouble(a);
                }
                s=s/n;
                rf.writeUTF("Java dla NSI");
                rf.writeDouble(s);
            }finally{
                rf.close();
            }
        }catch (IOException e1)
        {
            System.err.println("Problem IO:" + e1);
        } 

Ale jak teraz odczytać (przy użyciu RandomAccessFile) ostatnią liczbę zapisaną przed napisem czyli ostatnią tą dowolną double oraz tą za napisem czyli średnią tych pięciu double? Bo jak odczytuje to w ten sposób:

        try{
            RandomAccessFile rf = new RandomAccessFile("src" + File.separator + "wyjscie.dat","rw");
            try{
                byte[] buf = new byte[(int)rf.length()];  
                rf.readFully(buf);
                for(byte b: buf){
                        System.out.println(b);
            }finally{
                rf.close();
            }
        }catch (IOException e1)
        {
            System.err.println("Problem IO:" + e1);
        }
    } 

To wyrzuca mi masę liczb, gdy rzutuje tą zmienną b na char wtedy ukaże mi się napis i jakieś kwadraciki zamiast liczb ale jak dostać się do tego do czego chcę?

0

Może tak: wpierw readInt() żeby poznać n, potem n razy readDouble(), potem skipBytes(...), żeby pominąć napis, a w końcu jeszcze raz readDouble().

1 użytkowników online, w tym zalogowanych: 0, gości: 1