Wykład 10: Wejście i Wyjście

Podobne dokumenty
Wykład 4: Wejście/wyjście: strumienie Java

STRUMIENIE TEKSTOWE WEJŚCIOWE WPROWADZANIE DANYCH STRUMIENIE BAJTOWE, STRUMIENIE TEKSTOWE

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW

Język JAVA podstawy. Wykład 6, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Strumienie i serializacja

Kurs programowania. Wykład 10. Wojciech Macyna. 05 maja 2016

Podstawy i języki programowania

Programowanie obiektowe

Biblioteki wejścia/wyjścia. Strumienie we/wy (I/O)

1 Klasa File. 2 Writer. Programowanie w j zyku Java - Adam Krechowicz. Klasa File zapewnia podstawowe operacje na plikach

Podstawy otwartych języków programowania Wyjątki i strumienie I/O

Przygotował: Jacek Sroka 1. Java SE. Strumienie

Java niezbędnik programisty spotkanie nr 11. Importy statyczne, wejście/wyjście, wyrażenia regularne, serializacja

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

Programowanie Obiektowe (Java)

Strumienie, pliki. Sortowanie. Wyjątki.

Inynieria oprogramowania Lecture XXX. Java TM cz IV: IO. Bartosz Walter

Programowanie obiektowe

Wykład 2: Podstawy Języka

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

JAVA I SIECI. MATERIAŁY:

Rozdział 7 Strumienie, operacje wejścia-wyjścia

Metody zawarte w klasie File: boolean createnewfile() tworzy nowy, pusty plik, ale tylko jeśli on wcześniej nie istniał. boolean delete() usuwa dany

KOMUNIKACJA MIĘDZYPROCESOWA O B S Ł U G A WEJŚCIA/WYJŚCIA

Język JAVA podstawy. Wykład 6, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Wykład 2. Strumienie tekstowe (wprowadzanie danych z klawiatury) i bajtowe, otwieranie strumieni poprzez sieć - obiekty URL

Języki i metody programowania Java INF302W Wykład 4

dr Krzysztof Podlaski

Programowanie w Javie Lista nr 1. Wybieramy kategorię Java, a wśród Projektów Java Application i [NEXT]

K O M U N I K A C J A MIĘDZYPROCESOWA O B S Ł U G A WEJŚCIA/WYJŚCIA

Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5.

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

MATERIAŁY POMOCNICZE DO ĆWICZENIA 3 Klasy i obiekty; atrybuty i metody

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

Wstęp do Java. Operacje Wejścia-Wyjścia Programowanie Wielowątkowe. dr Krzysztof Podlaski. Wydział Fizyki i Informatyki Stosowanej

Bezpieczne uruchamianie apletów wg

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Wprowadzenie do języka Java

Programowanie w języku Java

Programowanie w języku Java WYKŁAD

Strumienie tekstowe (wprowadzanie danych z klawiatury) i bajtowe, otwieranie strumieni przez sieć - obiekty URL

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne

Języki i metody programowania Java INF302W Wykład 3 (część 1)

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Praktyczne aspekty programowania w Javie wydajność programu w zakresie automatycznego zarządzania zasobami

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Strumienie, pliki. Sortowanie. Wyjątki.

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Algorytmy z powrotami. Algorytm minimax

Wprowadzanie danych z klawiatury. Wyjątki związane z wprowadzaniem danych, przekroczeniem rozmiaru tablicy, dzieleniem przez zero itd.

Komunikacja z użyciem gniazd aplikacje klient-serwer

Języki i Techniki Programowania II. Wykład 6. Wejście/Wyjście

Programowanie obiektowe

Wybrane algorytmy tablicowe

MATERIAŁY POMOCNICZE DO ĆWICZENIA 1 Aplikacja w języku Java. Pakiety i biblioteki Javy. Kompilacja i wykonanie programu Javy

Java. Programowanie Obiektowe Mateusz Cicheński

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Java. Zadania z programowania z przykładowymi rozwiązaniami

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Pliki. Informacje ogólne. Obsługa plików w języku C

Platformy Programistyczne Zagadnienia sieciowe i wątki

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Pliki. Informacje ogólne. Obsługa plików w języku C

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

Programowanie w Javie - wykład 2

Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Funkcje zawarte w bibliotece < io.h >

Liczby pseudolosowe. Math. Różne sposoby generowania liczb pseudolosowych. Wybrane metody klasy Math

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Zaawansowane aplikacje WWW - laboratorium

Podstawowe części projektu w Javie

SWING c.d. przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe.

Funkcje zawarte w bibliotece < io.h >

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

JAVA?? to proste!! Autor: wojtekb111111

Biblioteka standardowa - operacje wejścia/wyjścia

Algorytmy i. Wykład 3: Stosy, kolejki i listy. Dr inż. Paweł Kasprowski. FIFO First In First Out (kolejka) LIFO Last In First Out (stos)

KLASY, INTERFEJSY, ITP

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

Programowanie współbieżne Laboratorium nr 11

Wykład 7: Pakiety i Interfejsy

Programowanie obiektowe

Podstawy obiektowości

Programowanie rozproszone w języku Java

Wykład 4: Klasy i Metody

Programowanie obiektowe

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

Podstawy i języki programowania

Projektowanie aplikacji internetowych laboratorium

Programowanie w Internecie. Java

itext 1. Wprowadzenie 2. Przykłady i zastosowania.

Programowanie obiektowe

Metody Metody, parametry, zwracanie wartości

Materiały do laboratorium I

akademia androida Składowanie danych część VI

Wykład 8: Obsługa Wyjątków

Transkrypt:

Wykład 10: Wejście i Wyjście

Pakiet java.io. Wejście/Wyjście Program realizuje wejście/wyjście przez użycie potoku. Ten sam sposób obsługi różnych urządzeń: konsola klawiatura plik na dysku gniazdko sieciowe, itp. Program nie musi znać różnicy między obsługą np. czytania z klawiatury, czy obsługą czytania z sieci.

Potoki Dwa rodzaje: bajtowy pisanie/czytanie danych binarnych znakowy pisanie/czytanie danych znakowych: używa Unicode (internacjonalizacja) bardziej efektywny implementacja bajtowa

Potoki Bajtowe Klasy abstrakcyjne InputStream i OutputStream Abstrakcyjne metody read() i write(). Pod-klasy: Buffered... buforowany I/O ByteArray... I/O z tablicy bajtów Data... I/O ze standardowych typów danych File... I/O z plików Filter... implementuje...stream Piped... łączenie potoków PrintStream OutputStream z print() i println() PushbackInputStream InputStream z "unget" RandomAccessFile losowy dostęp do pliku SequenceInputStream sekwencja liczby potoków

Potoki Znakowe Klasy abstrakcyjne Reader i Writer. Abstrakcyjne metody read() i write(). Pod-klasy: Buffered... buforowany I/O CharArray... I/O z tablicy znaków File... I/O z plików Filter... I/O z filtrowaniem String... I/O z ciągu znaków Piped... łączenie potoków InputStreamReader translacja bajtów na znaki OutputStreamWriter translacja znaków na bajty PrintWriter OutputStream z print() i println() PushbackReader InputStream z "unget"

Potoki Pre-Definiowane Częścią pakietu java.lang jest klasa System. Dostarcza trzy zmienne potokowe (public, static): System.in: InputStream standardowe urządzenie wejściowe (klawiatura) System.out: PrintStream standardowe urządzenie wyjściowe (konsola) System.err: PrintStream standardowe urządzenie błędów (konsola)

Czytanie z Konsoli Tradycyjnie przez potok bajtowy. Preferowana metoda potok znakowy jest łatwiejszy w konserwacji i internacjonalizacji. zamiana potoku bajtowego na znakowy InputStreamReader isr = new InputStreamReader(System.in) otoczenie potoku znakowego potokiem buforowanym BufferedReader br = new BufferedReader(isr) wymaga Reader, dostaje InputStreamReader

Czytanie Znaków Czytanie znaków z BufferedReader: int read() throws IOException Czyta znak z potoku wejściowego: zwraca liczbę całkowitą zwraca -1 jeśli koniec potoku Wejście jest buforowane przekazanie danych do programu po naciśnięciu ENTER.

Czytanie Znaków: Przykład import java.io.*; class BRRead { public static void main(string args[]) throws IOException { char c; BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); System.out.println("Enter characters, 'q' to quit."); do { c = (char) br.read(); System.out.println(c); while(c!= 'q');

Czytanie Łańcuchów Czytanie ciągu znaków z klawiatury: String readline() throws IOException

Czytanie Łańcuchów: Przykład import java.io.*; class BRReadLines { public static void main(string args[]) throws IOException { BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); String str; System.out.println("Enter lines of text."); System.out.println("Enter 'stop' to quit."); do { str = br.readline(); System.out.println(str); while(!str.equals("stop"));

Czytanie Łańcuchów: Inny Przykład import java.io.*; class TinyEdit { public static void main(string args[]) throws IOException { BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); String str[] = new String[100]; System.out.println("Enter lines of text."); System.out.println("Enter 'stop' to quit.");

Czytanie Łańcuchów: Inny Przykład for(int i=0; i<100; i++) { str[i] = br.readline(); if(str[i].equals("stop")) break; System.out.println("\nHere is your file:"); for(int i=0; i<100; i++) { if(str[i].equals("stop")) break; System.out.println(str[i]);

Mimo iż argument jest typu int, wypisywane jest tylko osiem najmniej znaczących bitów argumentu. Pisanie na Konsolę Najłatwiej przez print() i println(). Jest też nisko-poziomowy void write(int byteval) class WriteDemo { public static void main(string args[]) { int b = 'A'; System.out.write(b); System.out.write('\n');

Preferowana Metoda Pisania Przez znakową klasę PrintWriter: PrintWriter( OutputStream outputstream, boolean flushonnewline) outputstream to potok wyjściowy (System.out) flushonnewline czy potok jest czyszczony za każdym wywołaniem println() PrintWriter dostarcza print() i println(). Jeśli nie typ prosty, wywoływany jest tostring().

Pisanie na Konsolę: Przykład import java.io.*; public class PrintWriterDemo { public static void main(string args[]) { PrintWriter pw = new PrintWriter(System.out, true); pw.println("this is a string"); int i = -7; pw.println(i); double d = 4.5e-7; pw.println(d);

Czytanie/Pisanie do Plików Bajtowe potoki do obsługi plików. Można jest otaczać potokami znakowymi. Otwarcie pliku do czytania/pisania: FileInputStream(String filename) throws FileNotFoundException FileOutputStream(String filename) throws FileNotFoundException Zamknięcie pliku po obsłudze: void close() throws IOException

Czytanie/Pisanie do Plików Czytanie z pliku: int read() throws IOException Zwraca -1 gdy koniec pliku. Pisanie do pliku: void write(int byteval) throws IOException Mimo iż argument jest typu int, wypisywane jest tylko osiem najmniej znaczących bitów argumentu.

Czytanie Pliku: Przykład import java.io.*; class ShowFile { public static void main(string args[]) throws IOException { int i; FileInputStream fin; try { fin = new FileInputStream(args[0]); catch(filenotfoundexception e) { System.out.println("File Not Found"); return; catch(arrayindexoutofboundsexception e) { System.out.println("Usage: ShowFile File"); return;

Czytanie Pliku: Przykład do { i = fin.read(); if(i!= -1) System.out.print((char) i); while(i!= -1); fin.close();

Pisanie do Pliku: Przykład import java.io.*; class CopyFile { public static void main(string args[]) throws IOException { int i; FileInputStream fin; FileOutputStream fout; try { try { fin = new FileInputStream(args[0]); catch(filenotfoundexception e) { System.out.println("File Not Found"); return;

Pisanie do Pliku: Przykład try { fout = new FileOutputStream(args[1]); catch(filenotfoundexception e) { System.out.println( "Error Opening Output File"); return; catch(arrayindexoutofboundsexception e) { System.out.println( "Usage: CopyFile From To"); return;

Pisanie do Pliku: Przykład try { do { i = fin.read(); if(i!= -1) fout.write(i); while(i!= -1); catch(ioexception e) { System.out.println("File Error"); fin.close(); fout.close();

Wejściowy Potok Bajtowy Metody definiowane przez klasę InputStream: int available() - liczba bajtów do czytania void close() - zamyka potok void mark(int numbytes) oznacza bieżące miejsce w potoku do przeczytania numbytes znaków boolean marksupported() - czy potok wspiera mark/reset int read() - zwraca następny dostępny bajt, lub -1 int read(byte buffer[]) próbuje czytać znaki do bufora, zwraca ilość przeczytanych lub -1 int read(byte buffer[],int off,int num) jak wyżej, ale zapisuje z przesunięciem off

Wejściowy Potok Bajtowy, Ciąg Dalszy void reset() przesuwa wskaźnik pliku do poprzednio zaznaczonej pozycji long skip(long numbytes) przeskakuje numbytes bajtów z potoku wejściowego, zwraca faktyczną liczbę ignorowanych bajtów

Wyjściowy Potok Bajtowy Metody definiowane przez klasę OutputStream: void close() - zamyka potok void flush() czyści bufor na wyjście void write(int b) pisze pojedynczy bajt to potoku wyjściowego void write(byte buffer[]) - zapisuje całą tablicę bajtów do potoku wyjściowego void write(byte buffer[],int off,int num) zapisuje do potoku wyjściowego num bajtów z tablicy bajtów buffer, począwszy od indeksu off

Pliki Klasa File nie operuje na zawartości plików (potoku), a na samych plikach: dostęp ścieżka data i czas katalogi i podkatalogi Konstruktory: File(String directorypath) File(String directorypath, String filename) File(File dirobj, String filename)

Pliki: Przykład import java.io.file; class FileDemo { static void p(string s) { System.out.println(s); public static void main(string args[]) { File f1 = new File("C:/temp/COPYRIGHT"); p("file Name: " + f1.getname()); p("path: " + f1.getpath()); p("abs Path: " + f1.getabsolutepath()); p("parent: " + f1.getparent()); p(f1.exists()? "exists" : "does not exist");

Pliki: Przykład p(f1.canwrite()? "is writeable" : "is not writeable"); p(f1.canread()? "is readable" : "is not readable"); p("is " + (f1.isdirectory()? "" : "not" + " a directory")); p(f1.isfile()? "is normal file" : "might be a named pipe"); p(f1.isabsolute()? "is absolute" : "is not absolute"); p("file last modified: " + f1.lastmodified()); p("file size: " + f1.length() + " Bytes");

Katalog Katalog jest plikiem z listą innych plików/katalogów. Czy plik jest katalogiem? boolean isdirectory() Lista plików w katalogu: String[] list()

Katalog: Przykład import java.io.file; class DirList { public static void main(string args[]) { String dirname = "C:/temp"; File f1 = new File(dirname); if (f1.isdirectory()) { System.out.println( "Directory of " + dirname); String s[] = f1.list();

Katalog: Przykład for (int i=0; i < s.length; i++) { File f = new File(dirname + "/" + s[i]); if (f.isdirectory()) { System.out.println(s[i] + " is a directory"); else { System.out.println(s[i] + " is a file"); else { System.out.println(dirname + " is not a directory");