SHARE
TWEET

Java - komentasze!

a guest May 19th, 2017 38 in 19 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. public class JavaApplication7 {
  2.  
  3.     public static void zapisz(String nazwa) throws IOException{ // Nazwa funkcji, której jak nazwa wskazuje ma zapisać do pliku o nazwie NAZWA (zmienna) dane.
  4.         DataOutputStream plik = null;   // Tworzymy zmienną, która będzie obsługiwała nasz plik (w którym zapiszemy dane)
  5.         try{    // Obsługę plików wykonujemy w try/catch/finally
  6.             plik = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(nazwa)));//,true)));  // Tworzymy nasz plik
  7.             plik.writeInt(66);          // Dopisujemy do pliku liczbę całkowitą
  8.             //plik.writeInt(23);        // tutaj to samo
  9.         } finally{
  10.             if(plik!=null){ // Finalnie, jeżeli plik zozstał utworzony/otwary, to go zamykamy
  11.                 plik.close();
  12.             }
  13.         }
  14.     }
  15.    
  16.     public static void odczyt(String nazwa) throws IOException{ // Tutaj w drugą stronę - odczytujemy zawartość z pliku
  17.         DataInputStream plik = null;            // zmienna, która będzie obsługiwać nasz plik
  18.         int suma = 0;                           // tutaj jest zmienna, która w ramach "zadania" ma zliczać
  19.                                                 // sumę liczb jakie podalismy w pliku - czyli podczas zapisu
  20.         try{
  21.             plik = new DataInputStream(new BufferedInputStream(new FileInputStream(nazwa)));        // Odwołujemy się do pliku
  22.            
  23.             while(true){                        // W pętli WHILE pobieramy (czytamy) każdego kolejnego inta, tak długo aż nie wywali nam błędu - stąd mamy
  24.                                                 // CATCH - jeżeli plik się skończy, to pętla while spróbuje wczytać kolejną danę i wywali błąd - tak to się
  25.                                                 // po prostu tutaj robi. W CATCH zostanie wyświetlona suma
  26.                 int tmp = plik.readInt();       // tutaj do zmiennej pomocniczej czytamy inta (po wczytaniu wskaźnik w pliku się przesunie tak jakby za tą liczbę)
  27.                                                 // przez co w kolejnym wykonaniu pętli wczytamy już kolejnego inta.
  28.                 System.out.println(tmp);        // wyswietlamy naszego inta
  29.                 suma += tmp;                    
  30.             }
  31.         } catch (java.io.EOFException ex){      // jeżeli plik się skończy, to nadal będziemy próbowali wykonać instrukcję readInt() - która powie nam :
  32.                                                 // "słuchaj, to już koniec pliku, więc jest Błąd" i wrzuci nas w to miejsce.
  33.             System.out.println(suma);
  34.         }
  35.         finally{                                // Na samym końcu (niezależnie czy jest błąd czy nie) wrzuci nas do sekcji finally i zamknie plik
  36.                                                 // (o ile zsotał on wcześniej otwarty)
  37.             if(plik!=null){
  38.                 plik.close();
  39.             }
  40.         }
  41.     }
  42.    
  43.     public static void zapiszRAF(String nazwa) throws IOException{      // Podobnie jak powyżej - zapis działa w taki sam sposób, tylko na plikach RAF
  44.                                                                         // RAF (random acces file) - czyli pliki z dostepem swobodnym
  45.                                                                         // w normalnych plikach wskaźnik można ustawić na początku, albo na końcu pliku
  46.                                                                         // a w plikach RAF możemy go ustawić gdzie tylko chcemy.
  47.         RandomAccessFile plik = null;
  48.         try{
  49.             plik = new RandomAccessFile(nazwa,"rw");                    // tworzymy sobie plik RAF o nazwie NAZWA z typem dostepu "rw" - czyli read write
  50.             plik.writeChar('K');                                        // Poniżej dopisujemy raz znak (char), a raz liczbę (int)
  51.             plik.writeInt(23);
  52.             plik.writeChar('M');
  53.             plik.writeInt(23);
  54.             plik.writeChar('K');
  55.             plik.writeInt(34);
  56.             plik.writeChar('M');
  57.             plik.writeInt(64);
  58.         } finally{                                                      // na końcu zamykamy plik
  59.             if(plik!=null){
  60.                 plik.close();
  61.             }
  62.         }
  63.     }
  64.    
  65.        public static void odczytRAF(String nazwa) throws IOException{       // Odczyta wygląda jak w normalnych plikach, z tym, że tutja mamy RAF
  66.                                                                             //  Także nie ma sensu drugi raz opisywać dokładnie tej samej funkcji
  67.         RandomAccessFile plik = null;
  68.         int suma = 0;
  69.         try{
  70.             plik = new RandomAccessFile(nazwa,"rw");
  71.    
  72.             while(true){
  73.                 char tmpC = plik.readChar();
  74.                 int tmp = plik.readInt();
  75.                 System.out.println(tmpC +" " + tmp);
  76.                 suma += tmp;
  77.             }
  78.         } catch (java.io.EOFException ex){
  79.             System.out.println(suma);
  80.         }
  81.         finally{
  82.             if(plik!=null){
  83.                 plik.close();
  84.             }
  85.         }
  86.     }
  87.    
  88.    
  89.     /*Ta funkcja ma za zadanie pokazać możliwości operacji na plikach RAF.
  90.     W tym zadaniu w pliku mamy takie wartości: K 23 M 23 K 34 M 64
  91.     i chcemy, aby K - kobieta co odpalenie funkcji miała o rok więcej (dopóki nie osiągnie wieku 32 lat
  92.     Natomiast M - mężczyzna co odpalenie funkcji zawsze się starzeje*/
  93.     public static void zmienRAF(String nazwa) throws IOException{   // Odczytanie danych wygląda jak w funkcji odczytaRAF
  94.         RandomAccessFile plik = null;
  95.         try{
  96.             plik = new RandomAccessFile(nazwa,"rw");
  97.    
  98.             while(true){
  99.                 char tmpC = plik.readChar();        // Czytamy pierszy znak (K albo M) - po wczytaniu wskaźnik ustawia się za tym znakiem
  100.                 long poz = plik.getFilePointer();   // Zapisujemy aktualną pozycję wskaźnika
  101.                 int tmp = plik.readInt();           // Czytamy inta (czyli wiek)
  102.                
  103.                 if(tmpC=='M' || tmpC=='K' && tmp <32){  // Proste logiczne zdanie: jeżeli tmpC to M lub K i K jest młodsza niż 32 lata, to...
  104.                     tmp++;                              // Zwiększ tmp o jeden
  105.                    
  106.                     plik.seek(poz);                     // ustawiamy wskaźnik we wcześniej zapisanej pozycji - wskaźnik po wczytaniu INTA przesunął się
  107.                     plik.writeInt(tmp);
  108.                    
  109.                 }
  110.             }
  111.         } catch (java.io.EOFException ex){
  112.         }
  113.         finally{
  114.             if(plik!=null){                             // oraz zamykamy plik
  115.                 plik.close();
  116.             }
  117.         }
  118.     }
  119.    
  120.     public static void main(String[] args) throws IOException{      // Funkcja startowa - wykonuje się podczas odpalenia programu
  121.         //zapisz("test.txt");
  122.         //odczyt("test.txt");
  123.         //zapiszRAF("test.txt");
  124.         odczytRAF("test.txt");                  // wywołujemy funkcje z parametrem (nazwą pliku) "test.txt"
  125.         zmienRAF("test.txt");
  126.         odczytRAF("test.txt");
  127.     }
  128.    
  129. }
RAW Paste Data
Want to get better at Java?
Learn to code Java in 2017
Top