w10.pdf

(282 KB) Pobierz
Microsoft PowerPoint - w10.ppt
Wykład 10
Strumienie i pliki
Strumienie
Klasy strumieniowe dla określonych źródeł/odbiorników
Wybór plików
Klasy przetwarzające strumienie
Kodowanie
Analiza leksykalna strumienia znakowego
Serializacja obiektów
Pliki o dostępie bezpośrednim
Prosty edytor tekstu
645495612.003.png
Strumienie
W operacjach wejścia/wyjścia wykorzystywane są strumienie (ang. streams), które
są obiektami klas strumieniowych z pakietu java.io . W Javie istnieją dwa
rodzaje strumieni: strumienie bajtowe (ang. byte streams) i strumienie znakowe
(ang. character streams). W Javie znak jest dwubajtowym kodem Unikodu.
Strumień może być wejściowy (ang. input stream) lub wyjściowy (ang. output
stream) . Mamy więc cztery hierarchie klas strumieniowych, rozpoczynające się od
czterech klas abstrakcyjnych.
Wejście
Wyjście
Strumienie bajtowe
InputStream
OutputStream
Strumienie znakowe
Reader
Writer
Strumień jest pojęciem abstrakcyjnym. Na jednym końcu strumienia znajduje się
program Javy, który jest źródłem dla strumieni wyjściowych i odbiornikiem dla
strumieni wejściowych. Z drugiej strony strumienia może być np. plik, obszar w
pamięci operacyjnej, potok (ang.pipe), URL czy gniazdo (ang. socket). Potok
umożliwia wymianę danych między równolegle działającymi wątkami. Gniazdo
jest końcowym punktem połączenia między dwoma hostami sieci.
645495612.004.png
Kopiowanie strumieni
Chociaż cztery wymienione klasy strumieniowe są abstrakcyjne, to umożliwiają np.
napisanie ogólnej klasy do kopiowania strumieni bajtowych i znakowych.
import java.io.*;
public class Stream
{
static void copy(InputStream in, OutputStream out)
throws IOException
{ int b; while ((b = in.read()) != -1) out.write(b);
}
static void copy(Reader in, Writer out) throws IOException
{ int c; while ((c = in.read()) != -1) out.write(c);
}
}
Wykorzystanie tej klasy wymaga utworzenia konkretnych strumieni z konkretnym
odbiornikiem (dla strumienia wyjściowego) i źródłem (dla strumienia wejściowego).
645495612.005.png
Klasy strumieniowe dla określonych źródeł/odbiorników
Źródło/odbiornik
Strumienie
znakowe
Strumienie bajtowe
Plik
FileReader
FileWriter
FileInputStream
FileOutputStream
Pamięć
CharArrayReader
CharArrayWriter
ByteArrayInputStream
ByteArrayOutputStream
StringReader
StringWriter
Nie używane
Potok
PipedReader
PipedWriter
PipedInputStream
PipedOutputStream
645495612.006.png
Wybór plików
Wyboru plików można dokonywać za pomocą obiektu klasy JFileChooser (podobnie jak do
wyboru koloru można wykorzystać klasę JColorChooser). Natępny przykład ilustruje wybór i
kopiowanie plików tekstowych.
645495612.001.png 645495612.002.png
Zgłoś jeśli naruszono regulamin