1. Trang chủ
  2. » Giáo Dục - Đào Tạo

LẬP TRÌNH vào, RA với LUỒNG (STREAMS) (NGÔN NGỮ lập TRÌNH 1 SLIDE)

56 24 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 56
Dung lượng 1,38 MB

Nội dung

LECTURE LECTURE 44 LẬP LẬP TRÌNH TRÌNH VÀO/RA VÀO/RA VỚI VỚI LUỒNG LUỒNG (STREAMS) (STREAMS) Thư viện lớp luồng java: luồng byte, luồng ký tự Xuất nhập Console dùng luồng byte, luồng ký tự Xuất nhập files dùng luồng ký tự luồng byte Vấn đề xử lý files truy cập ngẫu nhiên dùng lớp RandomAccessFile Xử lý file thư mục dùng lớp File Bài tập: NỘI DUNG Cung cấp cho sinh viên kiến thức luồng (streams) files: • Thư viện lớp luồng java: luồng byte, luồng ký tự • Xuất nhập Console dùng luồng byte, luồng ký tự • Xuất nhập files dùng luồng ký tự luồng byte • Vấn đề xử lý files truy cập ngẫu nhiên dùng lớp RandomAccessFile • Xử lý file thư mục dùng lớp File PHẦN KHÁI NIỆM LUỒNG KHÁI NIỆM LUỒNG (STREAMS) • Luồng (stream) biểu diễn trừu tượng việc xuất nhập liệu kết nối với số thiết bị vào hay KHÁI NIỆM LUỒNG (STREAMS) • Java thực luồng tập hợp lớp phân cấp gói java.io Lớp trừu tượng java.io.InputStream Lớp trừu tượng java.io.OutputStream Dòng nhập byte vật lý Xử lý byte Dòng xuất byte vật lý Xử lý byte Biến / Đối tượng Dòng nhập ký tự Xử lý theo đơn vị byte Dòng xuất ký tự Xử lý theo đơn vị byte Lớp trừu tượng java.io.Reader Lớp trừu tượng java.io.Writer KHÁI NIỆM LUỒNG • Luồng byte (hay luồng dựa byte) hỗ trợ việc xuất nhập liệu byte, thường dùng đọc ghi liệu nhị phân • Luồng ký tự thiết kế hỗ trợ việc xuất nhập liệu kiểu ký tự (Unicode) Luồng ký tự hỗ trợ hiệu việc quản lý, xử lý ký tự LUỒNG BYTE (Byte Streams) Các luồng byte định nghĩa dùng hai lớp phân cấp • Mức hai lớp trừu tượng InputStream OutputStream • InputStream định nghĩa đặc điểm chung cho luồng nhập byte • OutputStream mơ tả cách xử lý luồng xuất byte CÂY THỪA KẾ CỦA INPUTSTREAM CÂY THỪA KẾ CỦA OUTPUTSTREAM LUỒNG KÝ TỰ (Character Streams) • Các luồng ký tự định nghĩa dùng hai lớp phân cấp • Mức hai lớp trừu tượng Reader Writer • Lớp Reader dùng cho việc nhập liệu luồng • Lớp Writer dùng cho việc xuất liệu luồng • Những lớp dẫn xuất từ Reader Writer thao tác luồng ký tự Unicode 10 ĐỌC GHI FILE DÙNG LUỒNG KÝ TỰ Ví dụ: Đọc dịng văn nhập từ bàn phím ghi chúng xuống file tên “test.txt” Việc đọc ghi kết thúc người dùng nhập vào chuỗi “stop” import java.io.*; class KtoD { public static void main(String args[]) throws IOException { String str; FileWriter fw; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); try{ fw = new FileWriter("D:\\test.txt"); } catch(IOException exc){ System.out.println("Khong the mo file."); return; } System.out.println("Nhap ('stop' de ket thuc chuong trinh)."); { System.out.print(": "); str = br.readLine(); if(str.compareTo("stop") == 0) break; str = str + "\r\n"; fw.write(str); } while(str.compareTo("stop") != 0); fw.close(); } 42 ĐỌC GHI FILE DÙNG LUỒNG KÝ TỰ • Ví dụ: đọc hiển thị nội dung file “test.txt” lên hình import java.io.*; class DtoS { public static void main(String args[]) throws Exception { FileReader fr = new FileReader("D:\\test.txt"); BufferedReader br = new BufferedReader(fr); String s; while((s = br.readLine()) != null) { System.out.println(s); } fr.close(); } } 43 LUồNG NHậP/XUấT ĐốI TƯợNG • Để lưu lại đối tượng, ta lưu thuộc tính Khi đọc lại đối tượng ta phải tạo đối tượng từ thuộc tính ghi => Dài dịng, linh hoạt • Java hỗ trợ đọc/ghi đối tượng cách đơn giản thông qua lớp ObjectInputStream ObjectOutputStream • Một đối tượng muốn đọc/ghi phải cài đặt giao tiếp java.io.Serializable 44 Ví dụ: Ghi lại tên ngày sinh try { FileOutputStream f = new FileOutputStream("birthfile.dat"); ObjectOutputStream oStream = new ObjectOutputStream(f); String babyName = "Briney Spears"; Date today = new Date(); oStream.writeObject(babyName); oStream.writeObject(today); oStream.close(); } catch (IOException e) { System.out.println(“Error IO file”); } 45 Ví dụ: Đọc tên ngày sinh try { FileInputStream f = new FileInputStream("birthfile.dat"); ObjectInputStream inStream = new ObjectInputStream(f); String name = (String) inStream.readObject(); Date birthDate = (Date) inStream.readObject(); System.out.println("Name of baby: " + name); System.out.println("Birth date: " + birthDate); inStream.close(); } catch (IOException e) { System.out.println(“Error IO file”); } catch (ClassNotFoundException e) { System.out.println(“Class of serialized object not found”); } 46 Đọc/ghi đối tượng tự tạo // file Student.java public class Student implements Serializable { private String name; private int age; Student(String name, int age) { this.name = name; this.age = age; } public String toString() { String ret = "My name is " + name + "\nI am " + age + " years old"; return ret; } } 47 Đọc/ghi đối tượng tự tạo // file WriteMyObject.java import java.io.*; public class WriteMyObject { public static void main(String[] args) { try { FileOutputStream f = new FileOutputStream("student.dat"); ObjectOutputStream oStream = new ObjectOutputStream(f); Student x = new Student("Bill Gates", 18); oStream.writeObject(x); oStream.close(); } catch (IOException e) { System.out.println(“Error IO file”); } 48 Đọc/ghi đối tượng tự tạo try { FileInputStream g = new FileInputStream("student.dat"); ObjectInputStream inStream = new ObjectInputStream(g); Student y = (Student) inStream.readObject(); System.out.println(y.toString()); inStream.close(); } catch (ClassNotFoundException e) { System.out.println(“Class not found”); } catch (IOException e) { System.out.println(“Error IO file”); } } } 49 Đọc/ghi đối tượng tự tạo • Đối tượng cài đặt phương thức sau để thực đọc/ghi theo cách riêng • private void writeObject(ObjectOutputStream out) throws IOException • private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException 50 PHẦN LỚP FILE 51 LỚP FILE • Lớp File khơng phục vụ cho việc nhập/xuất liệu luồng Lớp File thường dùng để biết thông tin chi tiết tập tin thư mục (tên, ngày tạo, kích thước, …) java.lang.Object + java.io.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 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ừ đối tượng File khác public File(File parent, String child) ví dụ: File dir = new File (“C:\\Java”); 52 File f = new File(dir, “vd1.java”); MỘT SỐ PHƯƠNG THỨC LỚP FILE 53 VÍ DỤ VỀ LỚP FILE import java.awt.*; import java.io.*; public class FileDemo { public static void main(String args[]) { Frame fr = new Frame ("File Demo"); fr.setBounds(10, 10, 300, 200); fr.setLayout(new BorderLayout()); Panel p = new Panel(new GridLayout(1,2)); List list_C = new List(); list_C.add("C:\\"); File driver_C = new File ("C:\\"); String[] dirs_C = driver_C.list(); for (int i=0;i

Ngày đăng: 29/03/2021, 12:34

TỪ KHÓA LIÊN QUAN

w