Advertisement
Talar97

RandomAccessFile dla plików binarnych

Jan 31st, 2018
398
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.40 KB | None | 0 0
  1. public static void RAF(){
  2.         //Deklaracja RandomAccessFile
  3.         try{
  4.             RandomAccessFile raf = new RandomAccessFile("plik.bin","rw");
  5.             try{
  6.                 //Zapis: przejście na 0 pozycje w pliku, wykorzystanie metod writeUTF dla stringa
  7.                 //int dla inta itd. Trzeba zwracać uwagę na typy danych (szczególnie ważne przy odczycie)
  8.                 raf.seek(0);
  9.                 raf.writeUTF("Adrian"); raf.writeUTF("Malina"); raf.writeInt(15); raf.writeDouble(100 );
  10.                 raf.writeUTF("Dariusz"); raf.writeUTF("Kokos"); raf.writeInt(21); raf.writeDouble(2137 );
  11.                 raf.writeUTF("Adam"); raf.writeUTF("Talarczyk"); raf.writeInt(20); raf.writeDouble(997 );
  12.  
  13.                 //Odczyt danych z plików
  14.                 //Przejście na zerową pozycję w pliku
  15.                 raf.seek(0);
  16.  
  17.                 //Pętla, która wykonuje się jeżeli pozycja wskaźnika pliku jest mniejsza
  18.                 // niż całkowita długość pliku
  19.                 while(raf.getFilePointer()<raf.length()){
  20.                     //Przy odczycie danych z plików binarnych trzeba zwracać uwagę na typy danych
  21.                     // pobieranych wartości
  22.                     // Jeżeli chcemy edytować jakaś konkretną linię w pliku, np zwiekszyć zarobki
  23.                     // to konieczne jest zapisanie pozycji startowej (przed pobraniem danej zmiennej)
  24.                     // i pozycji końcowej (stop) by po edycji konkretnej linii wrócić na sam koniec
  25.                     // Uniemożliwi to późniejsze pobranie i przypisanie do zmiennej złego typu danych
  26.                     String imie = raf.readUTF();
  27.                     String nazwisko = raf.readUTF();
  28.                     int wiek = raf.readInt();
  29.                     long start = raf.getFilePointer();
  30.                     double zarobki = raf.readDouble();
  31.                     long stop= raf.getFilePointer();
  32.  
  33.                     if(wiek>15){
  34.                         raf.seek(start);
  35.                         zarobki +=100;
  36.                         raf.writeDouble(zarobki);
  37.                         raf.seek(stop);
  38.                     }
  39.  
  40.                     System.out.println(imie + " " + nazwisko + " " + wiek + " " + zarobki);
  41.                 }
  42.             }catch(IOException e){ System.out.print("Błąd"); }
  43.         }catch(FileNotFoundException e) { System.out.println("Brak pliku"); }
  44.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement