1. Trang chủ
  2. » Luận Văn - Báo Cáo

Lập trình java cơ bản

51 5 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

Tiêu đề Lập trình Java cơ bản
Tác giả Cao Đức Thông, Trần Minh Tuấn
Trường học Đại Học FPT
Chuyên ngành Lập trình Java
Thể loại Sách giáo trình
Định dạng
Số trang 51
Dung lượng 152,49 KB

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

Nội dung

Khái ni ệm luồng stream• Lu ồng là một “dòng chảy” của dữ liệu được gắn với các thiết bị vào ra.. • Vi ệc xử lý vào ra thông qua luồng giúp cho l ập trình viên không phải quan tâm đến b

Trang 1

L ập trình Java cơ bản

Cao Đức Thông - Trần Minh Tuấn

cdthong@ifi.edu.vn , tmtuan@ifi.edu.vn

Trang 3

Khái ni ệm luồng (stream)

• Lu ồng là một “dòng chảy” của dữ liệu

được gắn với các thiết bị vào ra.

• Hai lo ại luồng:

• Lu ồng nhập: Gắn với các thiết bị nhập

nh ư bàn phím, máy scan, file

• Lu ồng xuất: Gắn với các thiết bị xuất như màn hình, máy in, file

• Vi ệc xử lý vào ra thông qua luồng giúp cho l ập trình viên không phải quan tâm đến bản chất của thiết bị vào ra.

Trang 4

Khái ni ệm luồng (stream)

• Ch ương trình đọc trên luồng nhập để lấy dữ

li ệu từ thiết bị nhập, ghi vào luồng xuất để đưa dữ liệu ra thiết bị xuất

Input Device

Input Stream

Program

Output Device

Output Stream

Trang 5

Các lu ồng cơ bản

• Lu ồng byte: Là dòng chảy các byte

• InputStream: Lu ồng nhập byte cơ bản

• OutputStream: Lu ồng xuất byte cơ bản

• Lu ồng ký tự: Là dòng chảy các ký tự

(char)

• Reader: Lu ồng nhập ký tự cơ bản

• Writer: Lu ồng xuất ký tự cơ bản

• Các l ớp luồng nằm trong gói java.io

Trang 6

Lu ồng byte

ByteArrayInputStream FileInputStream

FilterInputStream ObjectInputStream PipedInputStream SequenceInputStream StringBufferInputStream

BufferedInputStream LineNumberInputStream PushbackInputStream DataInputStream

InputStream

Trang 7

Lu ồng byte

ByteArrayOutputStream FileOutputStream

FilterOutputStream ObjectOutputStream PipedOutputStream

DataOutputStream

BufferedOutputStream OutputStream

PrintStream

Trang 8

Lu ồng nhập/xuất byte cơ bản

• InputStream và OutputStream là hai

l ớp gốc của mọi luồng nhập/xuất byte (abstract).

Object

Trang 9

L ớp InputStream

• abstract int read() throws IOException

• Đọc một byte từ luồng

• N ếu cuối luồng sẽ trả về -1

• int read(byte[] b) throws IOException

• Đọc một dãy byte từ luồng

• void close() throws IOException

Trang 10

L ớp OutputStream

• abstract void write(int b) throws IOException

• Ghi m ột byte ra luồng

• void write(byte[] b) throws IOException

• Ghi m ột dãy byte ra luồng

• void close() throws IOException

• Đóng luồng

• void flush() throws IOException

• D ồn xuất luồng

Trang 11

• FileOutputStream(String name, boolean append)

• Ph ương thức nhập/xuất của các luồng file

gi ống như của các luồng nhập xuất cơ bản

Trang 12

}f.close();

Trang 13

Ví d ụ: Ghi dữ liệu ra file

Trang 14

Input Stream

Trang 15

Lu ồng nhập/xuất dữ liệu sơ cấp

là 2 l ớp lọc cho phép nhập xuất dữ liệu

thu ộc các kiểu sơ cấp.

Input Stream DataInputStream

Input Device

char

long

float

Trang 16

Lu ồng nhập/xuất dữ liệu sơ cấp

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

• float readFloat() throws IOException

• int readInt() throws IOException

• long readLong() throws IOException

• String readUTF() thr ows IOException

• void writeFloat(float v) throws IOException

• void writeInt(int b) throws IOException

• void writeLong(long v) throws IOException

• void writeUTF(String s) throws IOException

• …

Trang 17

Ví d ụ: Tạo file các số ngẫu nhiên

try {

FileOutputStream f = new FileOutputStream("randnum.dat");

DataOutputStream outFile = new DataOutputStream(f);

FileInputStream g = new FileInputStream("randnum.dat");

DataInputStream inFile = new DataInputStream(g);

Trang 19

FileInputStream f = new FileInputStream("readme.txt");

BufferedInputStream inFile = new BufferedInputStream(f);

Trang 20

Ghép n ối nhiều luồng

• Có th ể dùng luồng lọc để ghép nối

nhi ều luồng với nhau.

• Ví d ụ:

FileInputStream fStream = new FileInputStream("data.dat");

BufferedInputStream bStream = new BufferedInputStream(fStream);

DataInputStream dStream = new DataInputStream(bStream);

dStream.close();

Trang 22

L ớp PrintStream

// Chương trình này đọc một file các số thực và ghi vào file khác //

dưới dạng văn bản

try {

FileInputStream f = new FileInputStream("float.dat");

DataInputStream inStream = new DataInputStream(f);

FileOutputStream ff = new FileOutputStream("ketqua.txt");

PrintStream pStream = new PrintStream(ff);

Trang 24

Lu ồng nhập/xuất đối tượng

• Để lưu lại một đối tượng, ta có thể lưu lần

l ượt từng thuộc tính của nó Khi đọc lại đối

t ượng ta phải tạo đối tượng mới từ các thuộc tính đã ghi.

=> Dài dòng, kém linh ho ạt.

• Java h ỗ trợ đọc/ghi các đối tượng một cách đơn giản thông qua lớp ObjectInputStream

và ObjectOutputStream.

• M ột đối tượng muốn có thể được đọc/ghi

ph ải cài đặt giao tiếp java.io.Serializable

Trang 25

Ví d ụ: Ghi lại tên và ngày sinh

try

{

FileOutputStream f = new FileOutputStream("birthfile.dat");

ObjectOutputStream oStream = new ObjectOutputStream(f);

String babyName = "Briney Spears";

Date today = new Date();

Trang 26

Ví d ụ: Đọc tên và ngày sinh

try

{

FileInputStream f = new FileInputStream("birthfile.dat");

ObjectInputStream inStream = new ObjectInputStream(f);

String name = (String) inStream.readObject();

Date birthDate = (Date) inStream.readObject();

System.out.println("Name of baby: " + name);

System.out.println("Birth date: " + birthDate);

Trang 27

Đọc/ghi đối tượng tự tạo

// file Student.java

public class Student implements Serializable

{

private String name;

private int age;

Student(String name, int age)

{

this.name = name;

this.age = age;

}

public String toString()

{

String ret = "My name is " + name +

"\nI am " + age + " years old";

return ret;

Trang 28

Đọc/ghi đối tượng tự tạo

FileOutputStream f = new FileOutputStream("student.dat");

ObjectOutputStream oStream = new ObjectOutputStream(f);Student x = new Student("Bill Gates", 18);

Trang 29

Đọc/ghi đối tượng tự tạo

try

{

FileInputStream g = new FileInputStream("student.dat");

ObjectInputStream inStream = new ObjectInputStream(g);Student y = (Student) inStream.readObject();

Trang 30

Đọc/ghi đối tượng tự tạo

• Đối tượng có thể cài đặt 2 phương thức sau để thực hiện đọc/ghi theo cách riêng

c ủa mình.

• private void writeObject(ObjectOutputStream

out) throws IOException

• private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException

Trang 32

Lu ồng ký tự

CharArrayReader

FileReader InputStreamReader

FilterReader StringReader PipedReader Reader

BufferedReader

PushBackReader

LineNumberReader

Trang 33

Lu ồng ký tự

CharArrayWriter

FileWriter OutputStreamWriter

FilterWriter Writer

StringReader PipedWriter BufferedWriter StringWriter

Trang 34

K ết nối luồng byte và luồng kí tự

• Có th ể chuyển từ luồng byte sang

Trang 35

• Ch ỉ rõ cách encoding

Trang 36

Ví d ụ: Ghi file Unicode

try

{

OutputStreamWriter buff = new OutputStreamWriter(new

FileOutputStream("unicode.txt"), "UTF-16");buff.write('ồ');

Trang 37

Ví d ụ: Đọc file Unicode

try

{

InputStreamReader buff = new InputStreamReader(new

FileInputStream("unicode.txt"), "UTF-16");int ch;

Trang 38

Chú ý khi so ạn thảo mã

• Mu ốn đưa trực tiếp tiếng Việt Unicode

vào cùng các đoạn mã Java cần phải sử

Trang 39

File truy nh ập ngẫu nhiên

• Hai h ạn chế của việc xử lý file thông qua lu ồng

• Không th ể đọc và ghi file cùng một lúc

• Truy nh ập file mang tính tuần tự

• Java h ỗ trợ việc truy nhập và xử lý file

m ột cách tự do thông qua lớp

RandomAccessFile.

Trang 40

File truy nh ập ngẫu nhiên

• Các ph ương thức cơ bản

• RandomAccessFile(String name, String mode)

// c ấu tử, trong đó mode có thể là “r”, “w”, “rw”

• int readInt(); // đọc số nguyên

• void writeInt(int v); // ghi s ố nguyên

• long readLong(); // đọc số long

• void writeLong(long v); // ghi s ố long

• void seek(long pos); // di chuy ển vị trí con trỏ file

• long getFilePointer(); // l ấy vị trí của con trỏ file

• long length(); // l ấy kích cỡ của file

• void close(); // đóng file

Trang 41

1234.56 true

Trang 42

Chú ý khi đóng file

• N ếu để lệnh f.close() trong khối try thì

có th ể lệnh này sẽ không được thực

hi ện khi có lỗi các lệnh phía trên.

• Có th ể viết lại như sau:

Trang 44

L ớp File

• L ớp File cho phép lấy thông tin về file và

th ư mục.

• boolean exists(); // ki ểm tra sự tồn tại của file

• boolean isDirectory(); // ki ểm tra xem file có phải

là th ư mục

• String getParent(); // l ấy thư mục cha

• long length(); // l ấy cỡ file (byte)

• long lastModified(); // l ấy ngày sửa file gần nhất

• String[] list(); // l ấy nội dung của thư mục

Trang 45

Ví d ụ: Hiển thị thông tin file

import java.io.*;

import java.util.Date;

public class FileInfo

System.out.println("Path is: " + file.getAbsolutePath());

System.out.println("It's size is: " + file.length());

Date dateModified = new Date(file.lastModified());

System.out.println("Last update is: " + dateModified);

}

else

System.out.println("The file does not exist");

}

Trang 46

Ví d ụ: Hiện nội dung thư mục

String[] subFiles = dir.list();

for(int i=0; i < subFiles.length; i++)

if (new File(subFiles[i]).isDirectory())

System.out.println(subFiles[i] + " <DIR>");

Trang 47

Tóm t ắt về xử lý file

DataOutputStream để nhập/xuất các dữ liệu

ki ểu sơ cấp (int, float )

ObjectOutputStream để nhập/xuất các đối

t ượng.

• Nên k ết hợp luồng file và luồng đọc/ghi ký

t ự để nhập xuất các file ký tự Unicode.

đọc/ghi tự do trên file.

• Dùng l ớp File để lấy thông tin về file

Trang 49

Bài t ập

1 Vi ết chương trình mycopy sử dụng như sau:

j ava m ycopy filenam e1 filenam e2

• N ếu filename1 và filename2 là 2 file thì chương

trình copy n ội dung của filename1 sang filename2

• N ếu filename2 là thư mục thì copy filename1

sang th ư mục filename2

• N ếu filename1 có tên là con thì cho phép tạo

filename2 v ới nội dung gõ từ bàn phím (giống

l ệnh copy con)

2 Vi ết chương trình mydir sử dụng như sau:

j ava m ydir filenam e Ch ương trình có chức

n ăng giống lệnh dir của DOS.

Trang 50

Bài t ập

3 Vi ết chương trình cho phép ngư i dùng chọn

m ột file văn bản, sau đó hiển thị nội dung

c ủa file này trong một đối tượng TextArea (Dùng l ớp JFileChooser để m hộp thoại

ch ọn file).

4 Vi ết chương trình đọc cấu trúc của một ảnh

bitmap và hi ển thị ra màn hình Tham khảo

c ấu trúc ảnh bitmap trên Internet.

Trang 51

Bài t ập

5 Vi ết chương trình quản lý một danh sách thí

sinh (Candidate) Ch ương trình cho phép

thêm thí sinh, tìm ki ếm, cập nhật Khi bắt đầu, chương trình sẽ lấy dữ liệu từ file

t hisinh.dat Khi k ết thúc, chương trình ghi

l ại danh sách sinh viên vào file Có thể

ObjectOutputStream và cài đặt Serializable.

Ngày đăng: 22/12/2022, 16:06

TỪ KHÓA LIÊN QUAN

w