Java TM – część IV: IO
description
Transcript of Java TM – część IV: IO
![Page 1: Java TM – część IV: IO](https://reader036.fdocuments.pl/reader036/viewer/2022082612/56814634550346895db340d9/html5/thumbnails/1.jpg)
JavaJavaTMTM – część IV: IO – część IV: IO
Inżynieria oprogramowaniaLecture XXX
Bartosz Walter<[email protected]>
![Page 2: Java TM – część IV: IO](https://reader036.fdocuments.pl/reader036/viewer/2022082612/56814634550346895db340d9/html5/thumbnails/2.jpg)
PlanPlan
Klasa java.io.FIle
Strumienie tekstowe
Strumienie standardowe
Properties
![Page 3: Java TM – część IV: IO](https://reader036.fdocuments.pl/reader036/viewer/2022082612/56814634550346895db340d9/html5/thumbnails/3.jpg)
WprowadzenieWprowadzenie
pakiet java.io.*; import java.io.*;
wyjątek java.io.IOException – rzucają niemal wszystkie metody klasy są zbudowane hierarchicznie wokół klas Reader i Writer (dla
plików tekstowych) oraz InputStream i OutputStream (dla danych binarnych)
obiekty strumieni są często dekorowane innymi obiektami udostępniającymi nowe funkcje
FileReader
BufferedReader
![Page 4: Java TM – część IV: IO](https://reader036.fdocuments.pl/reader036/viewer/2022082612/56814634550346895db340d9/html5/thumbnails/4.jpg)
Klasa java.io.FileKlasa java.io.File Reprezentuje ona albo nazwę konkretnego pliku, albo nazwę zbioru
katalogu (są traktowane w zasadzie tak samo) String[] list() – metoda która w przypadku katalogów zwraca tablice
z nazwami plików znajdujących się w danym katalogu String getName() – zwraca nazwę pliku String getAbsolutePath() – zwraca pełną ścieżkę pliku boolean exists() – czy istnieje boolean canWrite() – możliwość zapisu boolean canRead() – możliwość czytania boolean isFile() – czy plik boolean isDirectory() – czy katalog boolean renameTo(File newName) – zmiana nazwy boolean mkdirs() – tworzenie ścieżki o dowolnej złożonosci boolean delete() – kasowanie pliku
![Page 5: Java TM – część IV: IO](https://reader036.fdocuments.pl/reader036/viewer/2022082612/56814634550346895db340d9/html5/thumbnails/5.jpg)
Klasa java.io.File - przykładKlasa java.io.File - przykład
File katalog = new File("c:/katalog1");
File nowyKatalog = new File("c:/katlog2");
//tworzymy katalog
katalog.mkdirs();
//zmieniamy jego nazwę
katalog.renameTo(nowyKatalog);
![Page 6: Java TM – część IV: IO](https://reader036.fdocuments.pl/reader036/viewer/2022082612/56814634550346895db340d9/html5/thumbnails/6.jpg)
I/O- informacje podstawoweI/O- informacje podstawowe
Java wykorzystuje pojęcie strumienia (ang. stream) Strumień - reprezentacja dowolnego źródła danych, jako
obiektu zdolnego do wysyłania i odbierania porcji danych W Javie 1.1 zaszły istotne zmiany w stosunku do
wcześniejszych wersji (cel: obsługa standardu Unicode) Rozróżniamy dwa rodzaje strumieni: tekstowe i binarne Do obsługi tekstowych korzystamy z hierarchii klas Reader i Writer
Do obsługi binarnych korzystamy z hierarchii klas InputStream i OutputStream
![Page 7: Java TM – część IV: IO](https://reader036.fdocuments.pl/reader036/viewer/2022082612/56814634550346895db340d9/html5/thumbnails/7.jpg)
Reader i WriterReader i Writer
Używamy do obsługi strumieni tekstowych Powstały w celu obsługi standardu Unicode Podział na dwie podstawowe klasy Reader oraz Writer, które
posiadają metody read() i write() pozwalające na operacje czytania i zapisu bajtu lub tablicy bajtów(to samo InputStream i OutputStream)
Nie korzystamy z tych metod bezpośrednio. Wykorzystują je klasy dziedziczące, które służą do obsługi konkretnych źródeł.
![Page 8: Java TM – część IV: IO](https://reader036.fdocuments.pl/reader036/viewer/2022082612/56814634550346895db340d9/html5/thumbnails/8.jpg)
Czytanie z plików tekstowychCzytanie z plików tekstowych
try { File plik = new File("test1.txt"); BufferedReader in = new BufferedReader( new FileReader(plik)); String line;
while((line = in.readLine()) != null) System.out.println(s);
} catch(IOException e1) { System.err.println("Błąd przy przetwarzaniu");}catch(FileNotFoundException e2{ System.err.println("Brak pliku: "+ plik);} finally { in.close();}
![Page 9: Java TM – część IV: IO](https://reader036.fdocuments.pl/reader036/viewer/2022082612/56814634550346895db340d9/html5/thumbnails/9.jpg)
Zapis do plików tekstowychZapis do plików tekstowych
File plik = new File("test1.txt");String content ="Pierwsza Linia \nDruga Linia \nKoniec";String line;BufferedReader in = new BufferedReader( new StringReader(s));try {
PrintWriter out = new PrintWriter( new BufferedWriter(new FileWriter(plik)));
while ((line = in.readLine()) != null) out.println(s2);
out.close(); } catch(IOException e1){ // obsługa błedów}
![Page 10: Java TM – część IV: IO](https://reader036.fdocuments.pl/reader036/viewer/2022082612/56814634550346895db340d9/html5/thumbnails/10.jpg)
Standardowe wejście-wyjścieStandardowe wejście-wyjście
Termin odnosi się do koncepcji wywodzących się z Unixa, stosowanej potem w innych systemach operacyjnych
Dane wejściowe mogą pochodzić ze standardowego wejścia, a dane wyjściowe program może wysyłać na standardowe wyjście i standardowe wyjście błędów
Wyjście jednego programu może być wejściem drugiego System.in, System.out ,System.err są obiektami
![Page 11: Java TM – część IV: IO](https://reader036.fdocuments.pl/reader036/viewer/2022082612/56814634550346895db340d9/html5/thumbnails/11.jpg)
Czytanie ze standardowego wejściaCzytanie ze standardowego wejścia
try {
InputStreamReader ireader = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(ireader);
String line;
// wprowadzenie pustego wiersza kończy pętlę
while ((line = in.readLine()) != null) System.out.println(line);
} catch(IOException e1){
// obsługa błędów
}
![Page 12: Java TM – część IV: IO](https://reader036.fdocuments.pl/reader036/viewer/2022082612/56814634550346895db340d9/html5/thumbnails/12.jpg)
java.util.Propertiesjava.util.Properties
Wygodny system umożliwiający w prosty sposób konfigurację ustawień programu
Mogą być użyte do zapisywania i wczytywania ustawień przy każdym uruchomieniu programu
Poprzez prostą modyfikację wartości par klucz/wartość w pliku możemy łatwo zmienić konfigurację
Obiekt Properties składa się z par klucz/wartość zapisanych w postaci String
Properties można wczytać z i zapisać do pliku
![Page 13: Java TM – część IV: IO](https://reader036.fdocuments.pl/reader036/viewer/2022082612/56814634550346895db340d9/html5/thumbnails/13.jpg)
java.util.Properties - przykładjava.util.Properties - przykład
Properties props = System.getProperties();
// ale można także new Properties();
Enumeration propNazwy = props.propertyNames();
while (propNazwy.hasMoreElements()){
String klucz = (String) propNazwy.nextElement();
String wartosc = (String) props.getProperty(propNazwa);
System.out.println("Property " + klucz
+ ": " + wartosc);
}
![Page 14: Java TM – część IV: IO](https://reader036.fdocuments.pl/reader036/viewer/2022082612/56814634550346895db340d9/html5/thumbnails/14.jpg)
Q & AQ & A