1. Trang chủ
  2. » Công Nghệ Thông Tin

Vào ra với stream trong java

7 208 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 205,68 KB

Nội dung

Vào/Ra với Stream Java Vào/Ra với Stream Java Bởi: unknown Vào/Ra với Stream Java Stream dòng liên tục, có thứ tự bytes liệu chảy chương trình thiết bị ngoại vi Nó khái niệm trừu tượng giúp giảm bớt thao tác vào phức tạp người lập trình Nó cho phép nối kết nhiều loại thiết bị ngoại vi khác với chương trình Nếu dòng liệu Stream có hướng chảy từ thiết bị ngoại vi vào chương trình ta nói Stream nhập (Input Stream), ngược lại Stream xuất (Output Stream) Đối với Java, thiết bị nhập, bàn phím, có Stream nhập nối với nó, thiết bị xuất, hình, có stream xuất nối với , thiết bị vừa xuất, vừa nhập, đĩa từ, có stream nhập xuất nối với Để giao tiếp với thiết bị ngoại vi, chương trình trước tiên phải lấy stream nhập / xuất gắn với thiết bị ngoại vi Sau đó, chương trình gởi liệu ngoại vi thao tác ghi vào Stream xuất ngoại vi Ngược lại, chương trình nhận liệu từ ngoại vi thao tác đọc stream nhập ngoại vi Như vậy, chương trình làm việc stream nhập stream xuất, mà không quan tâm đến đặc điểm riêng biệt thiết bị ngoại vi nối với Stream Điều giúp chương trình giao tiếp với hệ thống mạng dễ dàng giao tiếp với hình, bàn phím hay đĩa từ Một điểm khác cần lưu ý stream bao gồm bytes rời rạc Những bytes mô tả dạng liệu khác Ví dụ số integer viết vào stream chuyển thành bytes Vì cần phải có thao tác chuyển đổi liệu nhận gởi chương trình stream Java hỗ trợ hai lớp stream gói java.io là: 1/7 Vào/Ra với Stream Java • java.io.InputStream: Stream nhập • java.io.OutputStream: Stream xuất Ngoài có lớp Stream thừa kế từ hai lớp nhằm mục đích cung cấp tiện ích cho loại thiết bị vào chuyên biệt như: FileInputStream, FileOutputStream, PipedInputStream, PipedOutputStream, Lớp java.io.InputStream Là loại stream cho phép chương trình nhận liệu từ ngoại vi Có phương thức sau: int read() throws IOException : Đọc byte từ Stream • Return 0-255 : Mã ASCII byte nhận từ ngoại vi • -1 : Stream kết thúc, không liệu Đối với Java, System.in InputStream nối kết với bàn phím tạo sẵn hệ thống Chương trình dùng InputStream để nhận ký tự nhập từ bàn phím Ví dụ: Hãy lưu chương trình sau vào tập tin InStream1.java import java.io.*;public class InStream1 { public static void main(String args[]) { InputStream is = System.in; // KeyBoard = System.in while (true) { try { int ch = is.read(); if (ch ==-1 || ch =='q') break; System.out.print((char)ch); } catch (IOException ie) { System.out.print("Error: "+ie); } } }} Biên dịch thực thi ta kết sau: Kết biên dịch chương trình InStream1.Java 2/7 Vào/Ra với Stream Java Ví dụ chờ nhận ký tự nhập từ bàn phím int read(byte b[]) throws IOException: Đọc tất byte có Stream vào mảng b • Return 0-255: Số lượng byte đọc • -1 : Stream kết thúc, không liệu int read(byte b[], int offset, int len) Đọc len byte từ Stream tại, lưu vào mảng b vị trí offset • Return: số lượng byte đọc • -1 : Stream kết thúc Các phương thức thực thi bị nghẽn (block) có liệu kết trúc Stream hay ngoại lệ xuất int available() Trả số lượng byte có Stream mà không làm nghẽn chương trình Ví dụ: Lưu chương trình sau vào tập tin có tên InStream2.java import java.io.*;public class InStream2 { public static void main(String args[]) { InputStream is = System.in; // KeyBoard = System.in while (true) { try { int num = is.available(); if (num > 0){ byte[] b = new byte[num]; int result = is.read(b); if (result == -1) break; String s = new String(b); System.out.print(s); } else { System.out.print('.'); } } catch (IOException ie) { System.out.print("Error: "+ie); } } }} Biên dịch thực thi ta kết sau: 3/7 Vào/Ra với Stream Java Kết biên dịch chương trình InStream2.Java Điểm khác biệt ví dụ ký tự ta nhập từ bàn phím không hiển thị tức hình Chúng hiển thị sau nhấn phím Enter Lớp java.io.OutputStream Là loại stream cho phép chương trình xuất liệu ngoại vi Có phương thức sau: void write(int b) throws IOException • Viết byte b vào Stream tại, • Return : void void write (byte[] b) throws IOException • Viết tất phần tử mảng b vào Stream • Return : void void write (byte[] b, int offset, int len) throws IOException: • Viết len phần tử mảng b vào Stream tại, phần tử có số offset mảng • Return : void Đối với Java, System.out OutputStream nối kết với hình tạo sẵn hệ thống Chương trình dùng OutputStream để gởi ký tự hình Ví dụ: Hãy lưu chương trình sau vào tập tin OutStream1.java 4/7 Vào/Ra với Stream Java import java.io.*;public class OutStream1 { public static void main(String args[]) { OutputStream os = System.out; // Monitor = System.out try { String str = "The example of OutputStream"; byte b[] = str.getBytes(); // Đổi chuỗi thành mảng bytes os.write(b); } catch (IOException ie) { System.out.print("Error: "+ie); } }} Biên dịch thực thi chương trình ta kết sau: Kết biên dịch chương trình OutStream.Java Nhập chuỗi từ InputStream InputStream Stream nhập gồm chuỗi bytes Nó cung cấp phương thức cho việc đọc byte mảng bytes Để đọc chuỗi từ InputStream ta phải sử dụng thêm lớp sau: • Lớp java.io.InputStreamReader: Là cầu nối để chuyển InputStream dạng byte sang InputStream dạng ký tự (Character) • Lớp java.io.BufferedReader: Hỗ trợ việc đọc văn từ InputStream dạng ký tự Phương thức String readLine() throws IOException BufferedReadercho phép đọc dòng văn InputStream Một dòng kết thúc cặp ký tự ‘\r’’\n’ kết thúc Stream Return: Một chuỗi ký tự null Giả sử is đối tượng thuộc lớp InputStream Để đọc chuỗi từ is ta thực thao tác sau: InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader (isr); String str = br.readLine(); 5/7 Vào/Ra với Stream Java Ví dụ: Đọc chuỗi từ bàn phím Lưu chương trình sau vào tập tin ReadLine.java import java.io.*;public class ReadLine{ public static void main(String args[]) { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); while (true) { try { String line = br.readLine(); if (line == null ) break; System.out.print(line); } catch (IOException ie) { System.out.print("Error: "+ie); } } }} Biên dịch thực thi ta có kết sau: Kết biên dịch chương trình ReadLine.Java Xuất chuỗi OutputStream OutputStream Stream xuất gồm chuỗi bytes Nó cung cấp phương thức cho việc viết byte mảng bytes Để gởi chuỗi OutputStream ta phải sử dụng lớp java.io.PrintWriter Giả sử: os OutputStream, str chuỗi cần viết vào os Ta thực thao tác sau: PrintWriter pw = new PrintWriter(os); pw.wirte(str); pw.println(str); // Nếu muốn có ký tự xuống dòng flush() // Đẩy liệu từ buffer ngoại vi Ví dụ: Viết chuỗi hình Lưu chương trình sau vào tập tin PrintString.java 6/7 Vào/Ra với Stream Java import java.io.*;public class PrintString { public static void main(String args[]) { OutputStream os = System.out; PrintWriter pw = new PrintWriter(os); pw.write("This is a string \r\n"); pw.println("This is a line"); pw.write("Bye! Bye!"); pw.flush(); }} Biên dịch thực thi ta được: Kết biên dịch chương trình PrintString.Java 7/7 .. .Vào/ Ra với Stream Java • java. io.InputStream: Stream nhập • java. io.OutputStream: Stream xuất Ngoài có lớp Stream thừa kế từ hai lớp nhằm mục đích cung cấp tiện ích cho loại thiết bị vào. .. OutputStream nối kết với hình tạo sẵn hệ thống Chương trình dùng OutputStream để gởi ký tự hình Ví dụ: Hãy lưu chương trình sau vào tập tin OutStream1 .java 4/7 Vào/ Ra với Stream Java import java. io.*;public... 3/7 Vào/ Ra với Stream Java Kết biên dịch chương trình InStream2 .Java Điểm khác biệt ví dụ ký tự ta nhập từ bàn phím không hiển thị tức hình Chúng hiển thị sau nhấn phím Enter Lớp java. io.OutputStream

Ngày đăng: 30/12/2015, 16:43

TỪ KHÓA LIÊN QUAN

w