1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Lập trình hướng đối tượng: Chương 7 - Châu Thị Bảo Hà

48 11 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 48
Dung lượng 1,69 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chương 7 của bài giảng Lập trình hướng đối tượng trình bày về nhập xuất trên java. Chương này gồm có các nội dung chính như sau: Khái niệm về các luồng (stream) nhập xuất, các loại luồng, thao tác với các luồng xử lý trong Java, lớp File. Mời các bạn cùng tham khảo.

Trang 1

Chương 7 NHẬP XUẤT TRÊN JAVA

Trang 2

Mục tiêu

• Đọc/ghi file văn bản

• Đọc/ghi file nhị phân

• Đọc/ghi đối tượng

Trang 4

7.1 Khái niệm về các luồng nhập xuất

• Luồng là một dòng dữ liệu đến từ một nguồn (source) hoặc đi đến một đích (sink)

• Nguồn và đích có thể là tập tin, bộ nhớ, một tiến trình hay thiết bị (bàn phím, màn hình, …), kết nối mạng

• I/O stream diễn tả cho một luồng nhập hoặc luồng xuất

o Luồng nhập (input stream): Gắn với các thiết bị nhập như bàn phím, máy scan, file…

o Luồng xuất (output stream): Gắn với các thiết bị xuất như màn hình, máy

in, file…

Trang 5

7.1 Khái niệm về các luồng nhập xuất

• Sử dụng luồng nhập để đọc dữ liệu từ nguồn đưa vào chương trình

• Sử dụng luồng xuất để ghi dữ liệu xuống đích

Trang 6

7.1 Khái niệm về các luồng nhập xuất

• Gói thư viện hỗ trợ nhập xuất trên Java: java.io.*

• Khi làm việc với luồng, phải bẫy tường minh lỗi IOException bằng khối try…catch

• Luồng hỗ trợ nhiều loại dữ liệu khác nhau:

o byte

o ký tự

o kiểu dữ liệu cơ sở

o đối tượng

Trang 8

7.3 Thao tác với các luồng xử lý trong

Java

• Các bước đọc/ghi file

o Tạo luồng, liên kết luồng với dữ liệu nguồn/đích

o Thao tác trên luồng

o Đóng luồng

Trang 9

7.3 Thao tác với các luồng xử lý trong

Trang 10

7.3 Thao tác với các luồng xử lý trong

StringBufferedInputStream StringReader PipedOuputStream PipedWriter PipedInputStream PipedReader FilterOutputStream FilterWriter

Trang 11

7.3 Thao tác … Lớp trừu tượng InputStream

Trang 12

7.3 Thao tác … Lớp trừu tượng InputStream

Trang 13

7.3 Thao tác…

Lớp trừu tượng OutputStream

Trang 14

7.3 Thao tác…

Lớp trừu tượng OutputStream

Trang 15

7.3 Thao tác … Lớp trừu tượng Reader

Trang 16

7.3 Thao tác … Lớp trừu tượng Reader

Trang 17

7.3 Thao tác … Lớp trừu tượng Writer

Trang 18

7.3 Thao tác … Lớp trừu tượng Writer

Trang 19

7.3 Thao tác…

Byte streams

• Luồng byte: thao tác theo đơn vị byte, nên áp dụng cho dữ liệu dạng nhị phân

• Biểu diễn một loại nhập xuất ở mức thấp mà ta nên tránh

o Nếu dữ liệu là dữ liệu ký tự, thì phương pháp tốt nhất là sử dụng luồng ký tự

o Ngoài ra, còn có nhiều luồng khác thích hợp cho những kiểu dữ liệu phức tạp

• Tất cả các luồng khác đều dựa trên luồng byte

Trang 20

7.3 Thao tác… Byte streams

• Ví dụ:

Trang 21

7.3 Thao tác…

Character streams

• Luồng ký tự: thao tác với ký tự (kể cả ký tự Unicode)

• Tất cả các lớp của luồng ký tự đều được dẫn xuất từ lớp Reader và Writer

• Các lớp thao tác trên tập tin của luồng ký tự:

o FileReader

o FileWriter

Trang 22

7.3 Thao tác…

Character streams

• Ví dụ:

Trang 24

7.3 Thao tác…

Character streams

• Line-Oriented I/O

Ví dụ:

Trang 25

7.3 Thao tác…

Buffered streams

• Nếu một I/O không có bộ đệm, nghĩa là mỗi yêu cầu đọc hoặc ghi được xử lý trực tiếp trên thiết bị

• Để giảm các chi phí trên, Java hỗ trợ luồng nhập xuất có bộ đệm

o Luồng nhập có bộ đệm (buffered input stream) đọc dữ liệu từ một vùng nhớ được xem như một bộ đệm; chỉ ghi vào khi nào bộ đệm rỗng

o Luồng xuất có bộ đệm (buffered output stream) ghi dữ liệu tới bộ đệm; chờ cho đến khi bộ đệm đầy mới ghi tới đích

Trang 26

7.3 Thao tác…

Buffered streams

• Một chương trình có thể chuyển một luồng không bộ đệm thành luồng

có bộ đệm

• Có 4 lớp luồng đệm dùng để “wrap” các luồng không bộ đệm:

o BufferedInputStream và BufferedOutputStream là các luồng byte có bộ đệm

o BufferedReader và BufferedWriter là các luồng ký tự có bộ đệm

Trang 27

7.3 Thao tác…

Buffered streams

• Vài trường hợp dữ liệu không chứa đủ bộ đệm Vì vậy, phải dùng flush

để ghi hết những gì còn lại trong bộ đệm ra

• Một vài lớp luồng xuất có bộ đệm hỗ trợ autoflush

o Khi chức năng autoflush được thiết lập, cần phải thiết lập sự kiện cụ thể

Trang 28

7.3 Thao tác… Buffered streams

• Ví dụ:

Trang 29

7.3 Thao tác… Buffered streams

• Ví dụ:

Trang 30

7.3 Thao tác…

Standard I/O streams

• Luồng I/O chuẩn

o Lớp System.out: luồng xuất chuẩn, hiển thị kết quả ra màn hình

o Lớp System.in: luồng nhập chuẩn, đọc dữ liệu từ bàn phím

o Lớp System.err: luồng xuất lỗi chuẩn

Trang 31

7.3 Thao tác…

Standard I/O streams

Trang 33

7.3 Thao tác… Data streams

• Một số phương thức của DataInputStream

Trang 34

7.3 Thao tác… Data streams

• Một số phương thức của DataOutputStream

Trang 35

7.3 Thao tác… Data streams

• Ví dụ:

Trang 36

7.3 Thao tác…

Object streams

• Tuần tự hóa dữ liệu

o Java cung cấp cơ chế được gọi là tuần tự hóa đối tượng (Object

Serialization) để tạo đối tượng bền vững

o Khi một đối tượng được tuần tự hóa, nó sẽ được chuyển thành tuần tự các byte dạng thô, biễu diễn đối tượng

Trang 37

7.3 Thao tác…

Object streams

• Luồng đối tượng

o Luồng đối tượng (Object streams) hỗ trợ việc đọc, ghi các đối tượng

o Nếu đối tượng hiện thực Serializable interface thì ta có thể sử dụng luồng đối tượng để đọc, ghi đối tượng đó

o Hai lớp hỗ trợ luồng đối tượng:

Trang 38

7.3 Thao tác…

Object streams

• Luồng đối tượng

o Bất kỳ đối tượng nào muốn tuần tự hóa (serialize) thì bắt buộc phải hiện thực giao diện Serializable

o Để tuần tự hóa một đối tượng, gọi phương thức writeObject của lớp

ObjectOutputStream

o Để khôi phục lại đối tượng đã được tuần tự hóa trước đó (deserialize), gọi phương thức readObject của lớp ObjectInputStream

o Các đối tượng được tuần tự hóa có thể được ghi vào file, truyền qua

mạng hoặc có thể chuyển sang các luồng khác

Trang 39

7.3 Thao tác… Object streams

• Ví dụ:

Trang 40

7.4 Lớp File

• Lớp File dùng cho việc thao tác trên tập tin và thư mục

• Tạo đối tượng File

o File myFile;

o myFile = new File(“data.txt”);

o myFile = new File(“myDocs”, “data.txt”);

• Thư mục cũng được coi như là một tập tin

o File myDir = new File(“myDocs”);

o File myFile = new File(myDir, “data.txt”);

o Có phương thức riêng để thao tác với thư mục

Trang 41

• boolean renameTo(File newName)

o Kiểm tra tập tin

Trang 43

7.5 Một số ví dụ

• Copy file

Trang 44

7.5 Một số ví dụ

• Copy file

Trang 45

7.5 Một số ví dụ

• Ghi đối tượng

Trang 46

7.5 Một số ví dụ

• Đọc đối tượng

Trang 47

7.5 Một số ví dụ

• Đọc/ghi ngẫu nhiên

Ngày đăng: 11/05/2021, 19:17

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm