« Home « Kết quả tìm kiếm

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


Tóm tắt Xem thử

- Luồng và xử lý file • Khái niệm luồng • Các luồng byte • Đối tượng serializable • Các luồng ký tự • File truy cập ngẫu nhiên • Lớp File • Bài tập 2 Khái niệm luồng (stream) được gắn với các thiết bị vào ra.
- Luồng là một “dòng chảy” của dữ liệu • Hai loại luồng.
- 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 Stream Input Device Program Output Device Output Stream 4 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 5 Luồng byte ByteArrayInputStream DataInputStream FileInputStream FilterInputStream BufferedInputStream InputStream ObjectInputStream LineNumberInputStream PipedInputStream PushbackInputStream SequenceInputStream StringBufferInputStream 6 Luồng byte ByteArrayOutputStream DataOutputStream FileOutputStream FilterOutputStream BufferedOutputStream OutputStream ObjectOutputStream PrintStream PipedOutputStream 7 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 InputStream OutputStream 8 Lớp InputStream • Một số phương thức của 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 • Đóng luồng nhập • int available() throws IOException • Trả về số byte có thể đọc tiếp • long skip(long n) throws IOException • Bỏ qua n byte 9 Lớp OutputStream • Một số phương thức của 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 10 Các luồng file • Được sử dụng để xuất nhập với file.
- 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 11 Ví dụ: Đọc và hiển thị file (v1) import java.io.
- System.out.print((char)ch.
- System.out.println("File not found.
- System.out.println("Can not read file.
- 12 } Ví dụ: Ghi dữ liệu ra file import java.io.
- try { System.out.println("Enter a string to write to file.
- int num = System.in.read(buffer).
- System.out.println("Error IO file.
- Luồng lọc có khả năng kết nối với các luồng khác và xử lý dữ liệu “theo cách riêng” của nó.
- Filter Stream Input Stream Input Device 14 Luồng nhập/xuất dữ liệu sơ cấp • DataInputStream và DataOutputStream 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.
- 15 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 • Một số phương thức của DataOutputStream • void writeFloat(float v) throws IOException • void writeInt(int b) throws IOException • void writeLong(long v) throws IOException • void writeUTF(String s) throws IOException.
- 16 Ví dụ: Tạo file các số ngẫu nhiên try { FileOutputStream f = new FileOutputStream("randnum.dat.
- try { FileInputStream g = new FileInputStream("randnum.dat.
- System.out.println("num.
- System.out.println("End of file.
- ghi dữ liệu trên thiết bị vào ra, tăng • Các lớp luồng đệm • BufferedInputStream (đệm nhập.
- BufferedOutputStream (đệm xuất) 18 Ví dụ: Đọc và hiển thị file (v2.
- Ví dụ: FileInputStream fStream = new FileInputStream("data.dat.
- 20 System.in và System.out • System.in • Đối tượng nhập chuẩn, gắn với bàn phím.
- System.out • Đổi tượng xuất chuẩn, gắn với màn hình.
- Lớp PrintStream • Cho phép hiển thị biểu diễn của dữ liệu.
- 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.
- pStream.println("Float.
- inStream.close.
- System.out.println(“End of file.
- Bài tập tại lớp • Bài 1: Viết chương trình đếm xem trong một file văn bản cho trước có bao nhiêu câu.
- Viết chương trình thứ hai • Bài 2: Viết chương trình tạo file ghi 100 số để đọc và hiển thị dữ liệu từ file này.
- 23 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ó.
- 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 24 Ví dụ: Ghi lại tên và ngày sinh try { FileOutputStream f = new FileOutputStream("birthfile.dat.
- oStream.close.
- System.out.println(“Error IO file.
- 25 Ví dụ: Đọc tên và ngày sinh try { FileInputStream f = new FileInputStream("birthfile.dat.
- System.out.println("Name of baby.
- System.out.println("Birth date.
- System.out.println(“Class of serialized object not found.
- 26 Đọc/ghi đối tượng tự tạo.
- 27 Đọc/ghi đối tượng tự tạo.
- file WriteMyObject.java import java.io.
- try { FileOutputStream f = new FileOutputStream("student.dat.
- 28 Đọc/ghi đối tượng tự tạo try { FileInputStream g = new FileInputStream("student.dat.
- System.out.println(y.toString.
- System.out.println(“Class not found.
- 29 Đọ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 30 Luồng ký tự • Từ Jdk 1.1, Java hỗ trợ đọc và thao tác trên luồng đối với các ký tự Unicode (2 byte.
- Luồng ký tự cơ bản • Reader (đọc) Object • Writer (ghi) Reader Writer 31 Luồng ký tự CharArrayReader InputStreamReader FileReader FilterReader PushBackReader Reader StringReader PipedReader BufferedReader LineNumberReader 32 Luồng ký tự CharArrayWriter OutputStreamWriter FileWriter FilterWriter Writer StringReader PipedWriter BufferedWriter StringWriter 33 Kết nối luồng byte và luồng kí tự • Có thể chuyển từ luồng byte sang luồng ký tự nh các lớp • InputStreamReader • OutputStreamReader • Ví dụ.
- BufferedReader buff = new BufferedReader(new InputStreamReader(System.in.
- 34 Luồng kí tự và Unicode • Unicode Encoding • UTF-8 • UTF-16 • Đọc/ghi file với các ký tự Unicode • Kết nối từ luồng FileInputStream/FileOutputStream vào InputStreamReader/OutputStreamWriter (có thể vào tiếp BufferedReader/BufferedWriter.
- Chỉ rõ cách encoding 35 Ví dụ: Ghi file Unicode try { OutputStreamWriter buff = new OutputStreamWriter(new FileOutputStream("unicode.txt.
- buff.close.
- 36 Ví dụ: Đọc file Unicode try { InputStreamReader buff = new InputStreamReader(new FileInputStream("unicode.txt.
- chế độ console sẽ không hiển thị được ký tự có System.out.print((char)ch.
- đọc số nguyên • void writeInt(int v.
- đọc số long • void writeLong(long v.
- 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.
- 40 Ví dụ với RandomAccessFile try { RandomAccessFile f = new RandomAccessFile("randfile.dat","rw.
- System.out.println(f.readInt.
- System.out.println(f.readChar.
- System.out.println(f.readDouble.
- System.out.println(f.readBoolean.
- j System.out.println(“Error IO file.
- 1234.56 } true 41 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: 42 Chú ý khi đóng file • FileInputStream f = null.
- hiển thị lỗi.
- 43 Lớp File • Lớp File cho phép lấy thông tin về file và thư mục.
- Một số phương thức của File • boolean exists.
- kiểm tra sự tồn tại của file • boolean isDirectory.
- lấy nội dung của thư mục 44 Ví dụ: Hiển thị thông tin file import java.io.
- import java.util.Date.
- if ( file.exists.
- 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.
- else System.out.println("The file does not exist.
- 45 Ví dụ: Hiện nội dung thư mục import java.io.
- System.out.println(subFiles[i.
- else System.out.println(subFiles[i.
- else System.out.println("The file is not a directory.
- 46 Tóm tắt về xử lý file DataOutputStream để nhập/xuất các dữ liệu • Nên dùng DataInputStream và kiểu sơ cấp (int, float.
- 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.
- 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.
- Viết chương trình cho phép ngư i dùng chọn của file này trong một đối tượng TextArea.
- Viết chương trình đọc cấu trúc của một ảnh cấu trúc ảnh bitmap trên Internet.
- Viết chương trình quản lý một danh sách thí sinh (Candidate).
- Chương trình cho phép đầu, chương trình sẽ lấy dữ liệu từ file thêm thí sinh, tìm kiếm, cập nhật.
- Khi kết thúc, chương trình ghi lại danh sách sinh viên vào file