Facebook
From Denim Sheep, 6 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 236
  1. package javaapplication12;
  2. import java.io.*;
  3.  
  4. class Test implements Serializable{ // słowo implements mówi: klasa TEST 'dziedziczy po interfejsie'  Serializable
  5.                                     // Jeżeli chcemy daną klasę zapisać do pliku, to musimy ją serializować - właśnie za pomocą tej klasy Serializable
  6.     int pole;
  7.     static int numer = 0;
  8.     public Test(int n){             // Konstruktor dla klasy
  9.         pole = n;
  10.         numer++;                    // jako iż jest to zmienna statyczna, to w każdym obiekcie ta wartość się zwiększy - w tym pliku jest to pokazane gdzieś poniżej.
  11.     }
  12.     public void metoda(Test t){     // Publiczna metoda dla klasy
  13.         t.pole = 25;
  14.     }
  15.     public void metoda(int x){      // Druga publiczna metoda, z przykładem działania polimorfizmu
  16.         //...
  17.     }
  18.  
  19.     public int getPole(){           // tak się tworzy właściwości dla zmiennych - czyli klasy, które zwracają wartość zmiennej (prywatnej w tym wypadku)
  20.         return pole;
  21.     }
  22.     public void setPole(int _pole){ // Podobnie jak powyżej, tylko tutaj nie pobieramy, a przypisujemy wartość do zmiennej (prywatnej), dzięki temu mamy kontrolę
  23.                                     // nad wartościami jakie przypisujemy do zmiennej
  24.         pole = _pole;
  25.     }
  26.     public static int getNumer(){   // tutaj mamy statyczną właściwość (taka zmienna statyczna ma tą samą wartość dla KAŻDEGO obiektu jaki stworzymy)
  27.         return numer;
  28.     }
  29.    
  30.     @Override
  31.     public String toString(){       // za pomocą atrybutu Override możemy przyciążyć daną już wcześniej zmienną (którą dziedziczymy niejawnie po klasie OBJECT)
  32.         return "abc";
  33.     }
  34. }
  35. class Test2 extends Test{           // słowo extends mówi:  że klasa TEST2 'dziedziczy po klasie' TEST
  36.     public Test2(){                 // Konstruktor dla klasy TEST2
  37.         super(10);                  // Który za pomocą słówka 'super' (odowłanie się do klasy bazowej - czyli TEST) robi instancję tej klasy
  38.         super.metoda(4);            // tutaj za pomocą słówka 'super' odwołujemy się do metody z klasy bazowej
  39.     }
  40. }
  41.  
  42. class Plik{                         // kolejna klasa... która potrafi czytać słowo lub linię z pliku
  43.     private FileReader pl;          // zmienna do czytania pliku
  44.    
  45.     public Plik(FileReader pl){     // konstruktor.
  46.         this.pl = pl;
  47.     }
  48.    
  49.     public Plik(String nazwa){      // drugi konstruktor - tutaj ładujemy plik po jego nazwie (ścieżce), a powyżej po obiekcie 'pl'
  50.         try {
  51.             pl = new FileReader(nazwa);
  52.         } catch (FileNotFoundException ex) {
  53.         }
  54.     }
  55.    
  56.     public String czytajLinie() throws IOException{     // jak nazwa mówi "czytaj linijkę" - operacje na plikach wymagają dodania "throws IOEXCEPTION"
  57.         String linia = "";      
  58.         char znak = (char)pl.read();                    // czytamy znak (każde wczytanie znaku przesuwa wskaźnik do przodu, więc za każdym razem wczytamy inny znak)
  59.                                                         // kiedy plik się skończy, to wystem zwróci wartość '-1'
  60.         while(znak!=-1 && znak!='\n'){                  // plik będzie czytany dopóki się nie skończy (czyli właśnie to -1), bądź dopóki nie będziemy mieli znaku końca linii (\n)
  61.             linia+=znak;            
  62.             znak = (char)pl.read();                     // tutaj czytamy kolejny znak
  63.         }
  64.         return linia;
  65.     }
  66.    
  67.     public String czytajSlowo() throws IOException{     // podobnie jak z linijką, tylko tutaj czytamy słowo i warunkiem skończenia czytania jest...
  68.                                                         // albo koniec pliku, albo kiedy wczytany znak będzie znakiem białym (spacja, tab, enter, etc)
  69.         String linia = "";
  70.         char znak = (char)pl.read();
  71.         while(znak!=-1 && !Character.isWhitespace(znak)){
  72.             linia+=znak;
  73.             znak = (char)pl.read();
  74.         }
  75.         return linia;
  76.     }
  77. }
  78. public class JavaApplication12 {        // główna klasa aplikacji
  79.     public static void zapisDoPliku(String nazwa, Test t) throws IOException{   // tutaj zapisujemy do pliku za pomocą klasy ObjectOutputStream - czyli takiej, która zapisuje wartości obiektów do pliku
  80.         ObjectOutputStream pl = null;           // Poniżej mamy standardowy schemat ładowania takiegp pliku
  81.         try{
  82.             pl = new ObjectOutputStream(new FileOutputStream(nazwa, true));
  83.            
  84.             pl.writeObject(t);          // Za pomocą tej metody możemy zapisać właśnie cały obiekt.
  85.         } finally{
  86.             if(pl!=null){
  87.                 pl.close();
  88.             }
  89.         }
  90.     }
  91.    
  92.     public static void odczytZPliku(String nazwa) throws IOException, ClassNotFoundException{       // tutaj w drugą strone... czytamy teraz cały obiekt...
  93.         ObjectInputStream pl = null;
  94.         try{
  95.             pl = new ObjectInputStream(new FileInputStream(nazwa));
  96.            
  97.             Test t = (Test)pl.readObject();
  98.             System.out.println(t.getPole());
  99.             t = (Test)pl.readObject();
  100.             System.out.println(t.getPole());
  101.         } finally{
  102.             if(pl!=null){
  103.                 pl.close();
  104.             }
  105.         }
  106.     }
  107.    
  108.     public static void main(String[] args) throws IOException, ClassNotFoundException {
  109.         /*
  110.         Test t = new Test(10);
  111.         System.out.printf("%d %d\n", t.getPole(), Test.getNumer());
  112.         Test t2 = new Test(100);
  113.         System.out.printf("%d %d\n", t.getPole(), Test.getNumer());
  114.         System.out.printf("%d %d\n", t2.getPole(), Test.getNumer());
  115.  
  116.         System.out.println(t.getPole());
  117.         System.out.println(t2.getPole());
  118.  
  119.         t.metoda(t2);
  120.        
  121.         t2.setPole(99);
  122.        
  123.         System.out.println(t.getPole());
  124.         System.out.println(t2.getPole());
  125.        
  126.        
  127.         Plik p = new Plik("/home/michal/NetBeansProjects/JavaApplication12/src/javaapplication12/JavaApplication12.java");
  128.         System.out.println(p.czytajLinie());
  129.         System.out.println(p.czytajSlowo());
  130.         System.out.println(p.czytajSlowo());
  131.         */
  132.         Test t = new Test(5);
  133.         //System.out.println(t.toString());
  134.         //zapisDoPliku("test.dat", t);
  135.         odczytZPliku("test.dat");
  136.     }
  137.    
  138. }
  139.