Danh mục tài liệu

Đề cương bài giảng Java cơ sở - Chương 5

Số trang: 20      Loại file: pdf      Dung lượng: 415.47 KB      Lượt xem: 21      Lượt tải: 0    
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

NHẬP XUẤTMột chương trình thường xuyên làm việc với dữ liệu, để có thể lưu trữ lâu dài chúng ta phải lưu trữ và nhận lại dữ liệu từ thiết bị lưu trữ ngoài, nguồn thông tin ngoài không chỉ gồm dữ liệu được lưu trữ trên đĩa từ, đĩa CD mà nó có thể là dữ liệu của một chương trình khác, hoặc có thể là được lưu trữ trên mạng… dù chúng được lưu trữ ở đâu chúng cũng chỉ có 1 số dạng như: ...
Nội dung trích xuất từ tài liệu:
Đề cương bài giảng Java cơ sở - Chương 5Chương 5 NHẬP XUẤT Một chương trình thường xuyên làm việc với dữ liệu, để có thể lưu trữlâu dài chúng ta phải lưu trữ và nhận lại dữ liệu từ thiết bị lưu trữ ngoài,nguồn thông tin ngoài không chỉ gồm dữ liệu được lưu trữ trên đĩa từ, đĩa CDmà nó có thể là dữ liệu của một chương trình khác, hoặc có thể là được lưutrữ trên mạng… dù chúng được lưu trữ ở đâu chúng cũng chỉ có 1 số dạngnhư: đối tượng, kí tự, hình ảnh hoặc âm thanh, dù dữ liệu được lưu trữ dướihình thức nào, lưu trữ ở đâu thì java đều trừu tượng hoá thành các luồng,điều này là rất tinh vi nó làm cho ta không cần phải quan tâm dữ liệu đượclưu trữ ở đâu, dưới dạng thức như thế nào, nó đồng nhất mọi nguồn dữ liệuvới nhau: Để nhận về các thông tin, một chương trình mở một luồng liên kết vớiđối tượng nguồn( tệp tin, bộ nhớ, Socket) và đọc các thông tin tuần tự.Tương tự để ghi thông tin ra các thiết bị ngoài bằng cách mở một luồng đếnđối tượng đích và ghi thông tin ra một cách tuần tự nhưLuồng là sự trừu tượng hoá ở mức cao, do vậy bất kể dữ liệu được đọc vào từđâu hoặc ghi ra đâu, thì thuật toán đọc/ghi tuần tự đều tựa như sau:Đọc vàoopen a streamwhile more informationread informationclose the streamGhi ra open a streamwhile more informationwrite informationclose the streamLớp luồng Java đưa ra nhiều lớp luồng, để xử lý mọi loại dữ liệu, java chia luồngra thanh 2 loại: luồng byte ( byte stream) và luồng kí tự (character stream),lớp InputStream và OutputStream là hai lớp cơ sở cho mọi luồng nhập xuấthướng byte, và lớp Reader/ Writer là hai lớp cơ sở cho việc đọc ghi hướng kítự.Lớp RandomAccessFile kế thừa từ lớp Object và triển khai giao diện,InputStream và OutputStream, đây là lớp duy nhất hỗ trợ cả đọc lẫn ghi.Lớp nhập, xuất hướng kí tựReader và Writer là hai lớp cơ sở trừu tượng cho luồng hướng kí tự, hai lớpnày cung cấp một giao diện chung cho tất cả các lớp đọc/ ghi hướng kí tự, mỗilần đọc/ ghi ra luồng là đọc 2 byte tương ứng với một kí tự unicode, Sau đaylà mô hình phân cấp các lớp đọc/ ghi hướng kí tựLuồng hướng byteĐể có thể đọc ghi 1 byte, ta phải sử dụng luồng hướng byte, hai lớp InputStreamvà OutputStream là hai lớp cơ sở trừu tượng cho các luồng hướng byte, mỗi lânđọc/ ghi ra luồng là đọc/ ghi 8 bit dữ liệu ra luồng, Hình sau thể hiện mối quan hệphân cấp giữa lớp đọc/ ghi hướng byteSự tương tự giữa hai luồng hướng byte và hướng kí tựLớp Reader và InputStream có một giao diện giống nhau, chúng chỉ khác nhau vềkiểu dữ liệu đọc vào, ví dụ lớp Reader có các phương thức sau giúp cho việc đọcmột kí tự hoặc một mảng các kí tựint read()int read(char cbuf[])int read(char cbuf[], int offset, int length)thì trong lớp InputStream cũng có các phương thức với tên tương tự cho việc đọcmột byte hoặc một mảng các byteint read()int read(byte cbuf[])int read(byte cbuf[], int offset, int length)Cũng tương tự vậy lớp Writer và OutputStream cũng có một giao diện tương tựnhau, ví dụ lớp Writer định nghĩa các phương thức để ghi một kí tự, một mảng cáckí tự ra luồngint write(int c)int write(char cbuf[])int write(char cbuf[], int offset, int length)thì lớp OutputStream cũng có các phương thức tương ứng, để ghi một byte, mộtmảng byte ra luồngint write(int c)int write(byte cbuf[])int write(byte cbuf[], int offset, int length)Xử lý tệp tinĐể xử lý tệp tin ngoại trú, ta sử dụng các luồng liên quan đến tệp tin nhưFileInputStream và FileOutputStream cho việc đọc ghi tệp hướng byte, FileReadervà FileWriter cho việc đọc ghi hướng kí tự, thông thường muốn sử dụng luồng tệptin ta sử dụng hàm tạo của các lớp tương ứng để liên kết luồng với một tệp tin cụthể.public void FileInputStream ( String FileName)public void FileInputStream ( File file)public void FileOutputStream ( String FileName)public void FileOutputStream (File file)public void FileWriter ( String FileName)public void FileWriter (File file)public void FileReader ( String FileName)public void FileReader (File file)Ví dụ: viết chương trình file copy, thực hiện việc copy một tệp, ta sẽ viết chươngtrình này sử dụng cả 2 luồng hướng byte và hướng kí tựimport java.io.*;// chương trình copy sử dụng luồng hướng kí tựpublic class CopyCharacter {public static void main(String[] args) throws IOException { File inputFile = new File(C:/in.txt); File outputFile = new File(C:/out.txt);FileReader in = new FileReader(inputFile);FileWriter out = new FileWriter(outputFile);int c;while ((c = in.read())! = -1)out.write(c);in.close();out.close();}}import java.io.*;// Chương trình copy sử dụng luồng hướng bytepublic class CopyBytes {public static void main(String[] args) throws IOException {File inputFile = new File(farrago.txt);File outputFile = new File(outagain.txt);FileInputStream in = new FileInputStream(inputFile);FileOutpu ...