Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void RAF(){
- //Deklaracja RandomAccessFile
- try{
- RandomAccessFile raf = new RandomAccessFile("plik.bin","rw");
- try{
- //Zapis: przejście na 0 pozycje w pliku, wykorzystanie metod writeUTF dla stringa
- //int dla inta itd. Trzeba zwracać uwagę na typy danych (szczególnie ważne przy odczycie)
- raf.seek(0);
- raf.writeUTF("Adrian"); raf.writeUTF("Malina"); raf.writeInt(15); raf.writeDouble(100 );
- raf.writeUTF("Dariusz"); raf.writeUTF("Kokos"); raf.writeInt(21); raf.writeDouble(2137 );
- raf.writeUTF("Adam"); raf.writeUTF("Talarczyk"); raf.writeInt(20); raf.writeDouble(997 );
- //Odczyt danych z plików
- //Przejście na zerową pozycję w pliku
- raf.seek(0);
- //Pętla, która wykonuje się jeżeli pozycja wskaźnika pliku jest mniejsza
- // niż całkowita długość pliku
- while(raf.getFilePointer()<raf.length()){
- //Przy odczycie danych z plików binarnych trzeba zwracać uwagę na typy danych
- // pobieranych wartości
- // Jeżeli chcemy edytować jakaś konkretną linię w pliku, np zwiekszyć zarobki
- // to konieczne jest zapisanie pozycji startowej (przed pobraniem danej zmiennej)
- // i pozycji końcowej (stop) by po edycji konkretnej linii wrócić na sam koniec
- // Uniemożliwi to późniejsze pobranie i przypisanie do zmiennej złego typu danych
- String imie = raf.readUTF();
- String nazwisko = raf.readUTF();
- int wiek = raf.readInt();
- long start = raf.getFilePointer();
- double zarobki = raf.readDouble();
- long stop= raf.getFilePointer();
- if(wiek>15){
- raf.seek(start);
- zarobki +=100;
- raf.writeDouble(zarobki);
- raf.seek(stop);
- }
- System.out.println(imie + " " + nazwisko + " " + wiek + " " + zarobki);
- }
- }catch(IOException e){ System.out.print("Błąd"); }
- }catch(FileNotFoundException e) { System.out.println("Brak pliku"); }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement