Chương 5: Các dòng nhập/xuất

Chia sẻ: Luong Truyen | Ngày: | Loại File: PPT | Số trang:27

0
134
lượt xem
86
download

Chương 5: Các dòng nhập/xuất

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tham khảo tài liệu 'chương 5: các dòng nhập/xuất', công nghệ thông tin, cơ sở dữ liệu phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Chủ đề:
Lưu

Nội dung Text: Chương 5: Các dòng nhập/xuất

  1. Java Object-Oriented Programming  Giảng viên : Nguyễn Đức Hiển  Email : ndhien@udn.vn  Website :  Thời lượng  Lýthuyết : 2 tín chỉ (30 tiết)  Thực hành + thảo luận : 1 tín chỉ Nguyễn Đức Hiển – Bài giảng Lập trình Java 1
  2. Chương 5 Các dòng nhập/xuất (Input/Output Streams) Nguyễn Đức Hiển – Bài giảng Lập trình Java 2
  3. Nội dung  Khái niệm  Dòng bộ đệm  Nhập/xuất với tập tin  Tuần tự hóa Nguyễn Đức Hiển – Bài giảng Lập trình Java 3
  4. Giới thiệu  Dòng (stream) là một sự biểu diễn trừu tượng dữ liệu được kết nối với một số thiết bị vào hay ra Nguyễn Đức Hiển – Bài giảng Lập trình Java 4
  5. Java Stream  Hỗ trợ sẵn bộ đệm tự động (buffering)  Hỗ trợ sự biểu diễn của các dòng sử dụng sự trừu tượng hóa mức cao (khác với bytes)  Đọc/ghi các kiểu dữ liệu đơn nguyên  Đọc/ghi các đối tượng  Định dạng sẵn các dòng ký tự bao gồm sự chuyển đổi qua lại với các biểu diễn khác (như int, double,…) Nguyễn Đức Hiển – Bài giảng Lập trình Java 5
  6. Các lớp stream cơ bản  Các lớp stream chính ở trong gói java.io.*  Hai lớp trừu tượng chính  InputStream  int read()  int read(byte[] b)  int read(byte[] b, int off, int len)  OutputStream  void write(int b)  void write(byte[] b)  void write(byte[] b, int off, int len)  Cung cấp chức năng cơ bản cho việc đọc dữ liệu đến một luồng theo dạng các byte thô Nguyễn Đức Hiển – Bài giảng Lập trình Java 6
  7. InputStream và OutputStream  Nhiều lớp dẫn xuất tồn tại để cung cấp các chức năng chuyên dụng.  Các lớp dẫn xuất đáng chú ý:  FileInputStream, FileOutputStream  BufferedInputStream, BufferedOutputStream  ObjectInputStream, ObjectOutputStream  PrintStream  Và còn nhiều hơn Nguyễn Đức Hiển – Bài giảng Lập trình Java 7
  8. Ví dụ: FileInputStream  Ví dụ chương trình đọc dữ liệu từ một tập tin theo từng byte (đọc một byte tại một thời điểm). Nguyễn Đức Hiển – Bài giảng Lập trình Java 8
  9. Các dòng bộ đệm  Ví dụ trước không có hiệu quả bởi vì nó đọc trực tiếp từ file một byte tại một thời điểm  chậm  Chúng ta có thể dùng lớp BufferedInputStream bao bọc lớp FileInputStream để đọc khối dữ liệu lớn hơn và lưu giữ trong một bộ đệm sử dụng cho việc đọc. Nguyễn Đức Hiển – Bài giảng Lập trình Java 9
  10. Các dòng bộ đệm File FileInputStream BufferedInputStream đọc dữ liệu từ file trong các khối lớn và lưu giữ dữ liệu trong một BufferedInputStream bộ đệm bên trong Bộ đệm Sau đó, bạn có thể đọc dữ liệu từ BufferedInputStream và dữ liệu được đọc từ bộ đệm thay vì trực tiếp từ file trên mỗi lần đọc Java Program { … … } Nguyễn Đức Hiển – Bài giảng Lập trình Java 10
  11. Ví dụ: BufferedInputStream  Ví dụ sử dụng lớp BufferedInputStream bao bọc lớp FileInputStream để đọc dữ liệu từ file: Nguyễn Đức Hiển – Bài giảng Lập trình Java 11
  12. Các dòng ký tự  Thông thường, các thiết bị vào/ra kết hợp với một dòng được biểu diễn như một dãy các ký tự.  Những tập tin văn bản, dữ liệu vào bằng bàn phím, đầu ra cuối,…  Việc xử lý trực tiếp với các byte thô của dữ liệu khi muốn làm việc với văn bản trong Java theo định dạng Unicode là rất khó khăn  Hai lớp trừu tượng chính để giải quyết điều này  Reader  Writer Nguyễn Đức Hiển – Bài giảng Lập trình Java 12
  13. Reader và Writer  Giống như các lớp InputStream và OutputStream, các lớp Reader và Writer cũng có nhiều lớp dẫn xuất  Đáng chú ý InputStreamReader  Dùng làm lớp bao bọc cho các đối tượng InputStream.  Chuyển đổi các byte thô khi chúng được đọc từ InputStream thành các ký tự Unicode.  Ví dụ:  FileInputStream fs = new FileInputStream(“Employee.dat”)  InputStreamReader inp = new InputStreamReader (fs));  Thường dùng BufferedReader  Dùng làm lớp bao bọc cho lớp InputStreamReader  Ví dụ: BufferedReader kb = new BufferedReader( new InputStreamReader(System.in)); Nguyễn Đức Hiển – Bài giảng Lập trình Java 13
  14. Các dòng chuẩn  Java cung cấp sẵn các dòng cho đầu vào, đầu ra, và lỗi chuẩn  System.in (InputStream)  System.out (PrintStream)  System.err (PrintStream)  Hai đối tượng System.out và System.err có kiểu PrintStream khá hữu ích cung cấp các cơ chế để in các kiểu dữ liệu cơ sở cũng như chuỗi vào dòng  System.in có kiểu InputStream là đối tượng nhập chuẩn, thông thường chúng ta phải bao bọc nó để dễ dàng sử dụng hơn Nguyễn Đức Hiển – Bài giảng Lập trình Java 14
  15. Đọc dữ liệu từ bàn phím  Như đã thấy, chúng ta có thể bao bọc lớp InputStreamReader ngoài InputStream để làm cho chúng trở nên hữu ích trong việc đọc dữ liệu ký tự  Sử dụng lớp bộ đệm BufferedReader cung cấp một phương thức readLine() cho chức năng bổ sung. Nguyễn Đức Hiển – Bài giảng Lập trình Java 15
  16. StreamTokenizer  Lớp StreamTokenizer cung cấp chức năng tương tự như StringTokenizer ngoại trừ nó mạnh hơn và lấy dữ liệu của nó từ một Reader thay vì một String  Theo mặc định nó đoán nhận các số, chuỗi, từ, chú thích, và khoảng trắng như các dấu hiệu (token)  Các dấu hiệu có thể được đọc một tại một thời điểm và kiểu của chúng có thể được xác định để xử lý chúng Nguyễn Đức Hiển – Bài giảng Lập trình Java 16
  17. Lớp File  Biểu diễn tên đường dẫn của một file (pathname) mà file có thể có hay không tồn tại.  Không thật sự đại diện cho chính file!  Cung cấp sự hỗ trợ cho các thao tác như kiểm tra nếu một file/thư mục tồn tại, nó là file hay thư mục, kiểm tra quyền truy cập đọc/ghi, tạo và xóa file,…  Dùng cho sự tạo các đối tượng dòng file Nguyễn Đức Hiển – Bài giảng Lập trình Java 17
  18. Lớp File  Các đối tượng File có thể được tạo cho cả các file lẫn thư mục  Cũng hỗ trợ cho các dấu tách đường dẫn.  Trên Unix tách đường dẫn là /, trong khi trên Windows là \ (được biểu diễn \\).  Tuy nhiên, cả hai dấu tách đều hợp lệ trên Windows. Nguyễn Đức Hiển – Bài giảng Lập trình Java 18
  19. Một số phương thức lớp File  exists() - kiểm tra file tồn tại  isDirectory() - kiểm tra file là một thư mục  isFile() - kiểm tra file thực sự là một file  isHidden() - kiểm tra file là ẩn  canRead() - kiểm tra file có thể được đọc bởi người sử dụng hiện thời  canWrite() - kiểm tra file có thể được ghi bởi người sử dụng hiện thời  getAbsolutePath() - trả lại đường dẫn tuyệt đối  getAbsoluteFile() - trả lại một đối tượng File … Nguyễn Đức Hiển – Bài giảng Lập trình Java 19
  20. Các dòng File  Các đối tượng File có thể được dùng tạo ra các đối tượng dòng như FileInputStream, FileOutputStream, FileReader, hay FileWriter.  Đơn giản cung cấp đối tượng File vào trong một trong số những phương thức khởi tạo thích hợp  Ví dụ: Nguyễn Đức Hiển – Bài giảng Lập trình Java 20

CÓ THỂ BẠN MUỐN DOWNLOAD

Đồng bộ tài khoản