Các lớp abstract này định nghĩa các giao tiếp cho các filter streams lọc dữ liệu trong khi đọc/ghi... Tổng quát về các Streams Ch u yển đổi b yt e k ý tự ( Con ve rting b etwee n By [r]
(1)CÔNG NGHỆ JAVA
CH8 JAVA INPUT/OUTPUT
Quang Dieu Tran PhD
(2)INPUT/OUTPUT STREAMS 1. Stream concepts
2. Input Streams 3. Output Streams 4. Reader
5. Writer
(3)Stream concepts
• Data exchange
• Data exchange type: Character, Object, voice,
picture, audio, video Program
(4)Stream
• Stream:
– dịng thơng tin tác nhân (mức cao)
– một dãy byte (mức thấp)
• Một stream gắn với nguồn (source), hay đích (destination)
• Stream operations:
– open stream – close stream – read
– write – seek
• Input stream: support reading functions
(5)This image cannot currently be displayed
Hình 1: Chương trình xử lý liệu từ input stream
Hình 2: Chương trình ghi liệu output stream
(6)Trình tự đọc/ ghi dòng
open input stream
while (more information){
read information
process information
}
close input stream
open output stream
while (more information){
get information from
write information }
close output stream
Đọc thông tin từ input stream
Ghi thông tin
(7)Các loại stream package java.io
• các lớp gói java.io được thiết kế gồm nhóm chính:
– Nhóm input/output stream, hay nhóm hướng byte
(8)Nhóm input/output stream
• Được gọi nhóm hướng byte, thao tác đọc/ghi áp dụng cho nhiều byte, giới hạn xử lý các byte bits ISO-Latin-1 Rất thích hợp cần xử lý liệu nhị phân ảnh, âm thanh, binary files
• Các input stream mở rộng từ lớp
InputStream (Abstract class)
• Các output stream mở rộng từ lớp
(9)(10)(11)Nhóm reader/writer
(12)(13)Các loại stream (tt)
• java IO cung cấp cách thức kết gắn stream với loại tác nhân khác nhớ, file
• Các lớp InputStreamReader và
OutputStreamWriter cung cấp chuyển đổi
giữa stream và reader/writer
(14)Tổng quát Streams
I/O Streams Mô tả khái quát
Memory CharArrayReader CharArrayWriter ByteArrayInput-Stream ByteArrayOutput-Stream
Đọc/ghi từ/vào nhớ.
Tạo stream từ mảng, dùng các phương thức đọc/ghi để đọc/ghi từ/vào mảng. Tác vụ đọc lấy liệu từ mảng
Tác vụ ghi ghi mảng
StringReader
StringWriter
StringBuffer-InputStream
StringReader để đọc ký tự từ một
String trong nhớ.
StringWriter để ghi vào String.
StringBufferInputStream tương tự như
StringReader Sự khác biệt là
(15)Tổng quát Streams Pipe PipedReader PipedWriter PipedInputStream PipedOutputStream
Hiện thực thành phần input và output pipe Pipes được dùng kênh truyền, nối output thread vào input của thread khác.
File
FileReader
FileWriter
FileInputStream
FileOutputStream
Được gọi file streams File streams dùng để đọc/ghi từ/vào file trên file system.
Nối
SequenceInput-Stream
(concatenation)
(16)Tổng quát Streams Object Serial-ization ObjectInputStream ObjectOutputStream
Dùng cần lưu trữ, khơi phục, hoặc truyền tồn đối tượng.
Chuyển đổi dạng dữ liệu (Data Conver-sion) DataInputStream DataOutputStream
Thuận tiện cần đọc/ghi kiểu liệu (primitive data types) int, double,
Counting
LineNumberReader
LineNumberInput-Stream
(17)Tổng quát Streams
Printing PrintWriter
PrintStream
Rất thuận tiện cần kết xuất, dễ đọc với người System.out là một đối tượng thuộc lớp
PrintStream. Đệm ( Buffer-ing) BufferedReader BufferedWriter bufferedInput-Stream BufferedOutput-Stream
Đệm liệu thao tác đọc/ghi.
Đệm liệu cải thiện tốc độ đọc ghi giảm số lần truy xuất thiết bị.
Lọc liệu (Filtering)
FilterReader
FilterWriter
FilterInputStream
FilterOutputStream
(18)Tổng quát Streams Ch u yển đổi b yt e k ý tự ( Con ve rting b etwee n By tes a nd Cha racters ) InputSt reamR eade r OutputS tream Writ er
Cặp reader/writer cầu nối byte streams và character streams.
Một InputStreamReader đọc các bytes từ một
InputStream và chuyển bytes thành ký tự.
Một OutputStreamWriter chuyển ký tự sang các bytes, ghi bytes vào một OutputStream.
Quá trình chuyển đổi sử dụng mã mặc định không được định rõ.
(19)Các lớp IO
• InputStream, OutputStream, Reader và Writer là lớp abstract:
– Các lớp input stream mở rộng từ lớp InputStream
– Các lớp reader mở rộng từ lớp Reader
– Các lớp output stream mở rộng từ lớp OutputStream
– Các lớp writer mở rộng từ lớp Writer
• 2 lớp InputStream và Reader cung cấp phương thức read
tương đối giống nhau.
• 2 lớp OutputStream và Writer cung cấp phương thức
(20)InputSream
• Low-Level Input Stream Purpose of Stream
• ByteArrayInputStream Reads bytes of data from an memory array
• FileInputStream Reads bytes of data from a file on the local file system
• PipedInputStream Reads bytes of data from a thread pipe
• StringBufferInputStream Reads bytes of data from a string
• SequenceInputStream Reads bytes of data from two or more low-level
streams, switching from one stream to the next when the
end of the stream is reached