Tải bản đầy đủ (.ppt) (27 trang)

BÀI TẬP LỚN LẬP TRÌNH JAVA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (139.74 KB, 27 trang )

1
LẬP TRÌNH JAVA
Giáo viên hướ ng dẫn: Ngô Công Thắng
Nhóm s inh viên: Nguyễn Thị Linh Chi
Vũ Thị Mai Hoa
Phạm Văn Hưởng
Lê Thị Hồng Nhung
Nguyễ n Thị S en
BÀI TẬP LỚN

2
N i Dung Chínhộ

Giới thiệu về vào/ra tệp (text và binary)

Luồng (Streams)

Khái niệm luồng

Luồng byte (Byte Streams)

Luồng ký tự (Character Streams)

Những luồng được định nghĩa trước

Vào ra tệp

Vào ra tệp dùng luồng byte

Vào ra tệp dùng luồng ký tự


3
Gi i thi u v vào/ra t p (text và binary) ớ ệ ề ệ
trong Java

Các dữ liệu mà một chương trình ngôn ngữ Java sử
dụng phải lấy từ rất nhiều loại nguồn dữ liệu khác
nhau, bao gồm cả cơ sở dữ liệu, chuyển giao byte trực
tiếp qua một ổ cắm (socket) và các tệp tin.

Ngôn ngữ Java sẽ mang lại cho bạn rất nhiều công cụ
để bạn có thể nhận được các thông tin từ các nguồn
bên ngoài. Các công cụ này phần lớn nằm trong gói
java.io.

4
Gi i thi u v vào/ra t p (text và binary) ớ ệ ề ệ
trong Java

Trong tất cả các nguồn dữ liệu sẵn có, các tệp tin là phổ
biến nhất và thường thuận tiện nhất. Việc hiểu biết cách
sử dụng các API có sẵn của ngôn ngữ Java để tương
tác với các tệp tin là một kỹ năng cơ bản của lập trình
viên.

Nhìn chung, ngôn ngữ Java cung cấp cho bạn một lớp
bao gói (File) cho kiểu tệp tin trong hệ điều hành của
bạn. Để đọc tệp tin đó, bạn phải sử dụng các luồng
(streams) phân tích cú pháp các byte đầu vào thành các
kiểu của ngôn ngữ Java.


5
Gi i thi u v vào/ra t p (text và binary) ớ ệ ề ệ
trong Java

Xử lý files là một phần của công việc xử lý các
luồng, giúp cho một chương trình có thể đọc, ghi dữ
liệu trong bộ nhớ, trên files và trao đổi dữ liệu thông
qua các kết nối trên mạng.

6
Lu ng (Streams)ồ

Khái niệm luồng

Tất cả những hoạt động nhập/xuất dữ liệu đều được
quy về một khái niệm gọi là luồng (stream). Luồng
là nơi có thể “sản xuất” và “tiêu thụ” thông tin.

Luồng thường được hệ thống xuất nhập trong
Java gắn kết với một thiết bị vật lý.

Tất cả các luồng đều có chung một nguyên tắc
hoạt động ngay cả khi chúng được gắn kết với các
thiết bị vật lý khác nhau. Vì vậy cùng một lớp,
phương thức xuất nhập có thể dùng chung cho các
thiết bị vật lý khác nhau.

7

Luồng byte


Các luồng byte được định nghĩa dùng hai lớp
phân cấp. Mức trên cùng là hai lớp trừu tượng
InputStream và OutputStream.

InputStream định nghĩa những đặc điểm chung
cho những luồng nhập byte. OutputStream mô tả
cách xử lý của các luồng xuất byte.
Lu ng (Streams)ồ

8

Luồng ký tự (Character Streams)

Các luồng ký tự được định nghĩa dùng hai lớp phân
cấp. Mức trên cùng là hai lớp trừu tượng Reader và
Writer.

Lớp Reader dùng cho việc nhập dữ liệu của luồng,
lớp Writer dùng cho việc xuất dữ liệu của luồng.
Lu ng (Streams)ồ

9

Những luồng được định nghĩa trước

Gói java.lang định nghĩa lớp System, có ba biến
luồng được định nghĩa trước là in, out và err, các
biến này là các fields được khai báo static trong lớp
System.

Lu ng (Streams)ồ

10

Những luồng được định nghĩa trước (cont)

System.out: luồng xuất chuẩn, mặc định là console.
System.out là một đối tượng kiểu PrintStream.

System.in: luồng nhập chuẩn, mặc định là bàn phím.
System.in là một đối tượng kiểu InputStream.

System.err: luồng lỗi chuẩn, mặc định cũng là
console. System.err cũng là một đối tượng kiểu
PrintStream giống System.out.
Lu ng (Streams)ồ

11
Vào ra t pệ

Vào ra tệp dùng luồng byte

Hai lớp InputStream và OutputStream là siêu lớp
đối với tất các các lớp luồng xuất nhập kiểu byte.

Những phương thức trong hai lớp này là tập tối tiểu
các chức năng nhập xuất mà những luồng nhập
xuất kiểu byte có thể sử dụng.

12


Vào ra tệp văn bản

Đọc dữ liệu từ tệp:

Mở tệp: tạo đối tượng lớp FileInputStream gắn với tệp
cần mở.

Đọc dữ liệu: dùng phương thức read() trên
FileInputStream, phương thức này đọc từng byte từ
tệp và trả về giá trị của byte đọc được. Trả về -1 khi
hết tệp, và trả về IOException khi có lỗi đọc.

Đóng tệp: dùng phương thức close() trên
FileInputStream.
Vào ra t p dùng lu ng byte (cont)ệ ồ

13
Vào ra t p dùng lu ng byte (cont)ệ ồ

Vào ra tệp văn bản (cont)
Ví dụ:
FileInputStream fin new FileInputStream(“test.txt”);
do
{
int i = fin.read();
if (i != -1) System.out.print((char) i);
} while(i != -1);
fin.close();


14
Vào ra t p dùng lu ng byte (cont)ệ ồ

Vào ra tệp văn bản (cont)

Ghi dữ liệu ra tệp:

Mở tệp: tạo đối tượng lớp FileOutputStream gắn với
tệp cần mở.

Ghi dữ liệu: dùng phương thức write(int byteval),
phương thức này ghi một byte xác định bởi tham số
byteval xuống tệp, và trả về IOException khi có lỗi
ghi.

Đóng tệp: dùng phương thức close() trên
FileInputStream.

15
Vào ra t p dùng lu ng byte (cont)ệ ồ

Vào ra tệp văn bản (cont)

Ví dụ:
FileOutputStream fout = new
FileOutputStream(“file.txt”);
for (int i = 0; i <= 10; i++) fout.write(i);
fout.close();

16


Vào ra tệp nhị phân

Đọc dữ liệu từ tệp:

Mở một tệp để đọc dữ liệu: dùng hàm tạo một đối
số của lớp DataInputStream tạo đối tượng gắn với
tệp cần mở, với đối số truyền vào là đối tượng lớp
FileInputStream.

Đọc dữ liệu: sử dụng phương thức tương ứng cho
từng kiểu dữ liệu.

Đóng tệp: dùng phương thức close().
Vào ra t p dùng lu ng byte (cont)ệ ồ

17

Vào ra tệp nhị phân
Ví dụ:
DataInputStream dataIn = new DataInputStream(
new FileInputStream("testdata"));
int i = dataIn.readInt();
System.out.println("Reading " + i);
double d = dataIn.readDouble();
System.out.println("Reading " + d);
dataIn.close();
Vào ra t p dùng lu ng byte (cont)ệ ồ

18


Vào ra tệp nhị phân

Ghi dữ liệu ra tệp:

Mở một tệp để ghi dữ liệu: dùng hàm tạo một đối số
của lớp DataOutputStream tạo đối tượng gắn với
tệp cần mở, với đối số truyền vào là đối tượng lớp
FileOutputStream.

Ghi dữ liệu: sử dụng phương thức tương ứng cho
từng kiểu dữ liệu.

Đóng tệp: dùng phương thức close().
Vào ra t p dùng lu ng byte (cont)ệ ồ

19

Vào ra tệp nhị phân
Ví dụ:
DataOutputStream dataOut = new DataOutputStream
( new FileOutputStream( "testdata"));
dataOut.write(i);
dataOut.write(d);
dataOut.close();
Vào ra t p dùng lu ng byte (cont)ệ ồ

20
Vào ra t p dùng lu ng ký tệ ồ ự


Đọc dữ liệu từ tệp:

Mở một tệp để ghi dữ liệu: dùng hàm tạo một đối số
của lớp FileWriter tạo đối tượng gắn với tệp cần mở,
tên tệp cần mở là đối số truyền vào cho hàm tạo của
lớp. Tạo một bộ đệm ghi dữ liệu (BufferedWriter) gắn
với đối tượng FileWriter.

21

Đọc dữ liệu từ tệp (cont):

Ghi dữ liệu: sử dụng phương thức write() trên bộ đệm
đọc dữ liệu.

Đóng tệp: làm rỗng và đóng bộ đệm đọc dữ liệu sử
dụng phương thức flush() và close().
Vào ra t p dùng lu ng ký t (cont)ệ ồ ự

22

Đọc dữ liệu từ tệp (cont):
Ví dụ:
FileReader fr = new FileReader(“test.txt");
BufferedReader br = new BufferedReader(fr);
String s;
while((s = br.readLine()) != null)
{
System.out.println(s);
}

fr.close();
Vào ra t p dùng lu ng ký t (cont)ệ ồ ự

23

Ghi dữ liệu ra tệp:

Mở một tệp để ghi dữ liệu: dùng hàm tạo một đối số
của lớp FileWriter tạo đối tượng gắn với tệp cần mở,
tên tệp cần mở là đối số truyền vào cho hàm tạo của
lớp. Tạo một bộ đệm ghi dữ liệu (BufferedWriter) gắn
với đối tượng FileWriter.
Vào ra t p dùng lu ng ký t (cont)ệ ồ ự

24

Ghi dữ liệu ra tệp (cont)

Ghi dữ liệu: sử dụng phương thức write() trên bộ đệm
đọc dữ liệu.

Đóng tệp: làm rỗng và đóng bộ đệm đọc dữ liệu sử
dụng phương thức flush() và close().
Vào ra t p dùng lu ng ký t (cont)ệ ồ ự

25

Ghi dữ liệu ra tệp (cont)
Ví dụ:
FileWriter fwriter = new FileWiter(“test.txt”);

BufferedWriter buffered = new BufferedWriter(fwriter);
buffered.write(str);
buffered.flush();
buffered.close();
Vào ra t p dùng lu ng ký t (cont)ệ ồ ự

×