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
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.
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).
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
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.
Plik z chomika:
Iskraa
Inne pliki z tego folderu:
w10.pdf
(282 KB)
Inne foldery tego chomika:
w1
w11-12
w2
w3
w4
Zgłoś jeśli
naruszono regulamin