Căn bản Java _ các dòng xuất nhập

27 345 0
Căn bản Java _ các dòng xuất nhập

Đ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

Mở đầu về phần hướng đối tượng trong Java chúng ta hãy tìm hiểu về cách nhập xuất dữ liệu.Đây là bài khá quan trọng,và ứng dụng trong tất cả các chương trình java cả về phần hướng cấu trúc. Về phần hướng đối tượng,nó phức tạp hơn hướng cấu trúc nhiều,nên việc đọc,soạn thảo,từ đây sẽ có phần khó với các bạn chưa từng học qua ngôn ngữ lập trình hướng đối tượng.Vậy nên,để dễ ghi nhớ,các bạn nên đọc đi đọc lại khi rãnh rỗi và áp dụng làm nhiều bài tập nếu có thể nhé.

Các dòng nhập/xuất (Input/Output Streams) Nội dung Khái niệm  Dòng đệm  Nhập/xuất với tập tin  Tuần tự hóa  Giới thiệu  Dòng (stream) biểu diễn trừu tượng liệu kết nối với số thiết bị vào hay Java Stream Hỗ trợ sẵn đệm tự động (buffering)  Hỗ trợ biểu diễn dòng sử dụng trừu tượng hóa mức cao (khác với bytes)  ◦ Đọc/ghi kiểu liệu đơn nguyên ◦ Đọc/ghi đối tượng ◦ Định dạng sẵn dòng ký tự bao gồm chuyển đổi qua lại với biểu diễn khác (như int, double,…) Các lớp stream   Các lớp stream gói java.io.* Hai lớp trừu tượng ◦ 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 cho việc đọc liệu đến luồng theo dạng byte thô InputStream OutputStream Nhiều lớp dẫn xuất tồn để cung cấp chức chuyên dụng  Các lớp dẫn xuất đáng ý:  ◦ ◦ ◦ ◦  FileInputStream, FileOutputStream BufferedInputStream, BufferedOutputStream ObjectInputStream, ObjectOutputStream PrintStream Và nhiều Ví dụ: FileInputStream  Ví dụ chương trình đọc liệu từ tập tin theo byte (đọc byte thời điểm) Các dòng đệm Ví dụ trước hiệu đọc trực tiếp từ file byte thời điểm  chậm  Chúng ta dùng lớp BufferedInputStream bao bọc lớp FileInputStream để đọc khối liệu lớn lưu giữ đệm sử dụng cho việc đọc  Các dòng đệm File FileInputStream BufferedInputStream Bộ đệm Java Program { … … } BufferedInputStream đọc liệu từ file khối lớn lưu giữ liệu đệm bên Sau đó, bạn đọc liệu từ BufferedInputStream liệu đọc từ đệm thay trực tiếp từ file lần đọc Ví dụ: BufferedInputStream  Ví dụ sử dụng lớp BufferedInputStream bao bọc lớp FileInputStream để đọc liệu từ file: Các dòng chuẩn  Java cung cấp sẵn dòng cho đầu vào, đầu ra, lỗi chuẩn ◦ System.in (InputStream) ◦ System.out (PrintStream) ◦ System.err (PrintStream)   Hai đối tượng System.out System.err có kiểu PrintStream hữu ích cung cấp chế để in kiểu liệu sở chuỗi vào dòng System.in có kiểu InputStream đối tượng nhập chuẩn, thông thường phải bao bọc để dễ dàng sử dụng Đọc liệu từ bàn phím   Như thấy, bao bọc lớp InputStreamReader InputStream để làm cho chúng trở nên hữu ích việc đọc liệu ký tự Sử dụng lớp đệm BufferedReader cung cấp phương thức readLine() cho chức bổ sung StreamTokenizer Lớp StreamTokenizer cung cấp chức tương tự StringTokenizer ngoại trừ mạnh lấy liệu từ Reader thay String  Theo mặc định đoán nhận số, chuỗi, từ, thích, khoảng trắng dấu hiệu (token)  Các dấu hiệu đọc thời điểm kiểu chúng xác định để xử lý chúng  Lớp File Biểu diễn tên đường dẫn file (pathname) mà file có hay không tồn  Không thật đại diện cho file!  Cung cấp hỗ trợ cho thao tác kiểm tra file/thư mục tồn tại, file hay thư mục, kiểm tra quyền truy cập đọc/ghi, tạo xóa file,…  Dùng cho tạo đối tượng dòng file  Lớp File   Các đối tượng File tạo cho file lẫn thư mục Cũng hỗ trợ cho dấu tách đường dẫn ◦ Trên Unix tách đường dẫn /, Windows \ (được biểu diễn \\) ◦ Tuy nhiên, hai dấu tách hợp lệ Windows Một số phương thức lớp File          exists() - kiểm tra file tồn isDirectory() - kiểm tra file thư mục isFile() - kiểm tra file thực file isHidden() - kiểm tra file ẩn canRead() - kiểm tra file đọc người sử dụng thời canWrite() - kiểm tra file ghi người sử dụng thời getAbsolutePath() - trả lại đường dẫn tuyệt đối getAbsoluteFile() - trả lại đối tượng File … Các dòng File    Các đối tượng File dùng tạo đối tượng dòng FileInputStream, FileOutputStream, FileReader, hay FileWriter Đơn giản cung cấp đối tượng File vào trong số phương thức khởi tạo thích hợp Ví dụ: Các dòng liệu   Như thấy, cách xử lý dòng dòng byte dòng ký tự Đôi muốn mức độ trừu tượng cao mong muốn đọc ghi liệu tới dòng theo dạng biến liệu đơn hay toàn đối tượng lớp ◦ Lưu thông tin trạng thái chương trình vào file ◦ Gửi biến liệu cho luồng (thread), tiến trình khác hay gửi qua mạng ◦ Nhiều ví dụ khác  Java có sẵn lớp dòng tự động kiểm soát việc chuyển đổi thông tin thành byte thô cần thiết Các dòng liệu   Java cung cấp hai lớp DataInputStream DataOutputStream tương ứng cho phép bạn đọc ghi kiểu liệu đơn nguyên tới dòng vào/ra Lớp DataInputStream ◦ ◦ ◦ ◦ ◦ ◦  readByte() readChar() readDouble() readFloat() readInt() … Lớp DataOutputStream có phương thức write tương ứng Ví dụ Dòng liệu lớp    Thông thường, chương trình không gồm có kiểu liệu đơn, muốn để đọc ghi lớp vào dòng Java cung cấp hai lớp để thực điều ObjectInputStream ObjectOutputStream Các lớp ObjectInputStream ObjectOutputStream cung cấp chức tương tự DataInputStream DataOutputStream, ngoại trừ chúng có hỗ trợ để đọc ghi liệu đối tượng thông qua phương thức readObject() writeObject() Sự hóa (Serialization)    Các đối tượng ghi vào dòng chúng kiểu lớp mà thực giao tiếp Serializable Đa số lớp có sẵn Java thực giao tiếp Serializable Serializable không định nghĩa phương thức nào.Vì thế, để tạo lớp người sử dụng định nghĩa có khả ghi vào dòng, thông thường bạn cần thêm “implements Serializable” khai báo lớp Sự hóa (Serialization) Có quy định bắt buộc việc ghi đối tượng vào dòng không lớp cần thực giao tiếp Serializable, mà tất thành viên lớp phải Serializable  Nếu thành viên lớp Serializable, khai báo transient đối tượng ghi vào dòng, thành viên ghi với giá trị null  Tóm tắt Bài Tập [...]... getAbsoluteFile() - trả lại một đối tượng File … 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ụ: Các dòng dữ liệu   Như đã thấy, cách xử lý các dòng có thể dòng các byte hoặc dòng các ký tự Đôi khi chúng ta muốn một... đọc và ghi dữ liệu tới các dòng theo dạng của các biến dữ liệu đơn hay toàn bộ đối tượng lớp ◦ Lưu thông tin trạng thái chương trình vào một file ◦ Gửi các biến dữ liệu cho các luồng (thread), các tiến trình khác nhau hay gửi qua mạng ◦ Nhiều ví dụ khác  Java có sẵn các lớp dòng tự động kiểm soát việc chuyển đổi thông tin này thành các byte thô cần thiết Các dòng dữ liệu   Java cung cấp hai lớp DataInputStream... phép bạn đọc và ghi các kiểu dữ liệu đơn nguyên tới các dòng vào/ra Lớp DataInputStream ◦ ◦ ◦ ◦ ◦ ◦  readByte() readChar() readDouble() readFloat() readInt() … Lớp DataOutputStream có các phương thức write tương ứng Ví dụ Dòng dữ liệu lớp    Thông thường, chương trình của chúng ta không chỉ gồm có các kiểu dữ liệu đơn, chúng ta cũng có thể muốn để đọc và ghi các lớp vào các dòng Java cung cấp hai... InputStreamReader(System.in)); 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.. .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... tượng chính để giải quyết điều này ◦ Reader ◦ Writer 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”)... 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  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ệ... ObjectOutputStream Các lớp ObjectInputStream và ObjectOutputStream cung cấp chức năng tương tự như DataInputStream và DataOutputStream, ngoại trừ chúng cũng có hỗ trợ để đọc và ghi dữ liệu đối tượng thông qua các phương thức readObject() và writeObject() Sự tuần tự hóa (Serialization)    Các đối tượng chỉ có thể được ghi vào một dòng nếu chúng là một kiểu lớp mà hiện thực giao tiếp Serializable Đa số các lớp... 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  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... Serializable Đa số các lớp có sẵn trong Java hiện thực giao tiếp Serializable Serializable không định nghĩa bất kỳ phương thức nào.Vì thế, để tạo một lớp do người sử dụng định nghĩa có khả năng được ghi vào một dòng, thông thường bạn chỉ cần thêm “implements Serializable” trong khai báo lớp Sự tuần tự hóa (Serialization) Có quy định bắt buộc trong việc ghi các đối tượng vào dòng đó là không chỉ lớp cần hiện

Ngày đăng: 15/11/2016, 14:37

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan