Bài giảng Lập trình hướng đối tượng - Chương 3: Luồng & Tập tin (Streams & Files)

Dữ liệu lưu trong bộ nhớ & tập tin

 Khái niệm về luồng

 Các loại luồng:

 Luồng byte (byte stream)

 Luồng ký tự (character stream)

 Thư viện luồng & tập tin trong java

 Xử lý tập tin và thư mục

 Một số ví dụ minh họa

pdf 24 trang yennguyen 1380
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình hướng đối tượng - Chương 3: Luồng & Tập tin (Streams & Files)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình hướng đối tượng - Chương 3: Luồng & Tập tin (Streams & Files)

Bài giảng Lập trình hướng đối tượng - Chương 3: Luồng & Tập tin (Streams & Files)
 LUỒNG & TẬP TIN 
(STREAMS & FILES) 
NỘI DUNG 
 Dữ liệu lưu trong bộ nhớ & tập tin 
 Khái niệm về luồng 
 Các loại luồng: 
 Luồng byte (byte stream) 
 Luồng ký tự (character stream) 
 Thư viện luồng & tập tin trong java 
 Xử lý tập tin và thư mục 
 Một số ví dụ minh họa 
Dữ liệu trong bộ nhớ & tập tin 
 Dữ liệu trong bộ nhớ RAM 
 Tính chất tạm thời 
 Dung lượng bộ nhớ 
RAM hạn chế hơn so 
với đĩa cứng 
 Dữ liệu trong tập tin 
 Tính chất lâu dài 
 Dung lượng đĩa lớn 
hơn nhiều so với bộ 
nhớ RAM 
 Xử lý luồng & Xử lý File 
Khái niệm về luồng 
InputStream 
OutputStream 
2 lớp trừu tượng InputStream và 
OutputStream trong gói java.io 
Khái niệm về luồng 
 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ả những hoạt động nhập/xuất dữ liệu (nhập dữ 
liệu từ bàn phím, lấy dữ liệu từ mạng về, ghi dữ liệu 
ra đĩa, xuất dữ liệu ra màn hình, máy in, ) đều 
được quy về một khái niệm gọi là luồng (stream) 
Khái niệm về luồng 
 Có thể hiểu luồng là một lộ trình dữ liệu được truyền 
trong chương trình. 
 Chức năng của luồng: vận chuyển dữ liệu từ nơi này 
qua nơi khác. Các chương trình muốn chuyển dữ 
liệu cho nhau phải tạo các luồng để gửi và nhận dữ 
liệu. 
 Tất cả các task liên quan đến các lớp nhập xuất 
trong java nếu có lỗi sẽ quăng ra một IOException. 
Các loại luồng 
 Luồng byte (Byte Streams) (java.io) 
 Hai lớp trừu tượng ở mức trên cùng do Java 
định nghĩa 
 InputStream 
 Output Stream 
 Luồng ký tự (Character Streams) (java.io) 
 Reader 
 Writer 
Byte Stream 
Phương thức Ý nghĩa 
InputStream 
int available( ) Trả về số luợng bytes có thể đọc được từ 
luồng nhập 
void close( ) Đóng luồng nhập và giải phóng tài nguyên 
hệ thống gắn với luồng. Không thành công 
sẽ ném ra một lỗi IOException 
void mark(int numBytes) Đánh dấu ở vị trí hiện tại trong luồng nhập 
boolean markSupported( ) Kiểm tra xem luồng nhập có hỗ trợ phương 
thức mark() và reset() không. 
int read( ) Đọc byte tiếp theo từ luồng nhập 
Byte Stream 
int read(byte buffer[ ], int 
offset, int numBytes) 
Đọc numBytes bytes bắt đầu từ địa chỉ offset 
và lưu vào trong vùng nhớ buffer. Kết quả trả 
về số bytes thật sự đọc được 
void reset( ) Nhảy con trỏ đến vị trí được xác định bởi việc 
gọi hàm mark() lần sau cùng. 
long skip(long numBytes) Nhảy qua numBytes dữ liệu từ luồng nhập 
int read(byte buffer[ ]) Đọc buffer.length bytes và lưu vào trong vùng 
nhớ buffer. Kết quả trả về số bytes thật sự đọc 
được 
Byte Stream 
OutputStream 
void close( ) Đóng luồng xuất và giải phóng tài nguyên hệ 
thống gắn với luồng. Không thành công sẽ 
ném ra một lỗi IOException 
void flush( ) Ép dữ liệu từ bộ đệm phải ghi ngay xuống 
luồng (nếu có) 
void write(int b) Ghi byte dữ liệu chỉ định xuống luồng 
void write(byte buffer[ ]) Ghi buffer.length bytes dữ liệu từ mảng chỉ 
định xuống luồng 
void write(byte buffer[ ], 
int offset, 
int numBytes) 
Ghi numBytes bytes dữ liệu từ vị trí offset 
của mảng chỉ định buffer xuống luồng 
Đọc dữ liệu từ bàn phím 
(nhập thiết bị nhập chuẩn) 
- Dùng luồng nhập chuẩn InputStream 
Ví dụ minh họa - Đọc dữ liệu từ Console 
import java.io.*; 
class ReadBytes 
{ 
 public static void main(String args[]) throws IOException 
 { 
 byte data[] = new byte[100]; 
 System.out.print("Enter some characters."); 
 System.in.read(data); 
 System.out.print("You entered: "); 
 for(int i=0; i < data.length; i++) 
 System.out.print((char) data[i]); 
 } 
} 
Ví dụ minh họa - Đọc dữ liệu từ Console 
Kết quả thực thi chương trình: 
Ví dụ minh họa - Đọc dữ liệu từ Console 
 Dùng đối tượng Scanner (java.util.Scanner hỗ trợ từ 
phiên bản jdk 1.5): một đối tượng scanner text đơn 
giản có thể dùng để phân tích các chuỗi, kiểu dữ liệu 
cơ sở dùng regular expressions. 
Ví dụ minh họa - Đọc dữ liệu từ Console 
import java.util.*; 
public class ScannerInputDemo { 
public static void main( String args[] ){ 
 System.out.println(“Đọc dữ liệu từ bàn phím dùng Scanner ”); 
 Scanner scanner= new Scanner(System.in); 
 System.out.println(“Please enter your full name:”); 
 String fullname = scanner.nextLine(); 
 System.out.println(“how old are you?”); 
 int age = scanner.nextInt(); 
Ví dụ minh họa - Đọc dữ liệu từ Console 
 System.out.println(“Hello “ + fullname + “.”); 
 System.out.println(“Are you “ + age + ” years old. Oh, really. You 
 are too young!”); 
} 
} 
Ví dụ minh họa - Đọc dữ liệu từ File 
Viết chương trình cho phép người dùng chọn mở 1 tập tin trên đĩa 
và nạp nội dung của tập tin vào ô TextArea tương tự chức năng mở 
đọc file của chương trình MS Notepad của Windows. 
Ví dụ minh họa - Đọc dữ liệu từ File 
Ví dụ minh họa - Đọc dữ liệu từ File 
Ví dụ minh họa – Ghi dữ liệu ra File 
Viết chương trình cho phép người dùng nhập dữ liệu vào ô TextArea 
và chọn 1 tập tin trên đĩa để lưu nội dung nội dung đã nhập tương tự 
chức ghi file của chương trình MS Notepad của Windows. 
Ví dụ minh họa – Ghi dữ liệu ra File 
Xử lý thư mục – Lớp File 
 java.lang.Object 
 +--java.io.File 
 Lớp File không phục vụ cho việc nhập/xuất dữ liệu 
trên luồng. Lớp File thường được dùng để biết được 
các thông tin chi tiết về tập tin cũng như thư mục 
(tên, ngày giờ tạo, kích thước, ) 
Xử lý thư mục – Lớp File 
 Các Constructor: 
 Tạo đối tượng File từ đường dẫn tuyệt đối 
 public File(String pathname) 
 ví dụ: File f = new File(“C:\\Java\\vd1.java”); 
 Tạo đối tượng File từ tên đường dẫn và tên tập tin tách biệt 
 public File(String parent, String child) 
 ví dụ: File f = new File(“C:\\Java”, “vd1.java”); 
 Tạo đối tượng File từ một đối tượng File khác 
 public File(File parent, String child) 
 ví dụ: File dir = new File (“C:\\Java”); 
 File f = new File(dir, “vd1.java”); 
Xử lý thư mục – Lớp File 
 Một số phương thức thường gặp của lớp File 
public String getName() Lấy tên của đối tượng File 
public String getPath() Lấy đường dẫn của tập tin 
public boolean isDirectory() Kiểm tra xem tập tin có phải là thư mục không? 
public boolean isFile() Kiểm tra xem tập tn có phải là một file không? 
public String[] list() Lấy danh sách tên các tập tin và thư mục con của 
đối tượng File đang xét và trả về trong một 
mảng. 

File đính kèm:

  • pdfbai_giang_lap_trinh_huong_doi_tuong_chuong_3_luong_tap_tin_s.pdf