Lập trình luồng nhập xuất

Một phần của tài liệu Giáo trình lập trình java (ngành hệ thống thông tin) (Trang 28 - 34)

Java sử dụng khái niệm luồng (Stream) để làm cho hoạt động Input/Output (I/O)

nhanh chóng. Gói java.io chứa tất cả các lớp cần thiết cho các hoạt động đầu vào và đầu ra.

Stream là một dòng liên tục, có thứ tự các bytes dữ liệu chảy giữa chương trình và thiết bị ngoại vi. Trong console có 3 stream tự động.

1) System.out: standard output stream 2) System.in: standard input stream 3) System.err: standard error stream

Ví dụ:

System.out.println("Xin chào."); System.err.println("Lỗi.");

int i=System.in.read(); //trả về mã ASCII của ký tự đầu tiên System.out.println((char)i); //xuất ký tự đã nhập

Có các loại streams cơ bản: byte streams, character streams, buffered streams,

scanning and formatting, data streams, object streams. Trong giáo trình này hướng dẫn sử dụng byte streams.

InputStream: được sử dụng để đọc dữ liệu từ một nguồn (source).

KHOA CÔNG NGHỆ THÔNG TIN 29

Lớp InputStream là một lớp trừu tượng. Nó là lớp cha của tất cả các lớp đại diện cho một luồng vào của các bytes.

Hình 2.10: Các lớp của luồng nhập –Nguồn [5]

OutputStream: được sử dụng để ghi dữ liệu đến đích (destination).

Hình 2.11: Luồng xuất - Nguồn [5]

Lớp OutputStream là một lớp trừu tượng. Nó là lớp cha của tất cả các lớp đại diện cho một luồng ra của các bytes. Một luồng ra chấp nhận các byte đầu ra và gửi chúng đến một số bộ phận chìm.

KHOA CÔNG NGHỆ THÔNG TIN 30

FileOutputStream

Java FileOutputStream là một luồng ra được sử dụng để ghi dữ liệu vào một tệp. Nếu bạn phải ghi các giá trị kiểu dữ liệu cơ bản vào một tệp, hãy sử dụng lớp FileOutputStream. Bạn có thể ghi dữ liệu hướng byte cũng như dữ liệu hướng ký tự thông qua lớp FileOutputStream.

Các phương thức của FileOutputStream:

Bảng 2.8: Phương thức của FileOutputStream

Phương thức Mô tả

protected void finalize() Xóa kết nối vớitập tin output stream.

void write(byte[] ary) Ghi tất cả chiều dài ary.length bytes của mảng

byte vào file output stream. void write(byte[] ary, int off,

int len)

Ghi tất cả chiều dài ary.length bytes của mảng byte bắt đầu tại offset off đến file output stream.

void write(int b) Ghi một byte cụ thể vào file output stream.

FileChannel getChannel() Trả về file channel object giao tiếp với file output stream.

FileDescriptor getFD() Trả về mô tả của tập tin giao tiếp với stream. void close() Đóng file output stream.

Khai báo java.io.FileOutputStream để sử dụng FileOutputStream.

Ví dụ: Xuất một ký tự vào tập tin.

try (FileOutputStream fout = new FileOutputStream("testout.txt")) { fout.write(65);

System.out.println("Thành công..."); }catch(IOException e){

System.out.println(e); }

KHOA CÔNG NGHỆ THÔNG TIN 31

Ví dụ: Xuất một chuỗi vào tập tin.

try(FileOutputStream fout = new FileOutputStream("outString.txt")){ String s="Xin chào Java.";

byte b[]= s.getBytes();//chuyển sang kiểu byte

fout.write(b); fout.close();

System.out.println("Xuất tập tin thành công.");

}catch(Exception ex){

System.out.println(ex); }

Hình 2.14: Kết quả xuất chuỗi vào tập tin FileInputStream

Java FileInputStream là một luồng ra được sử dụng để đọc dữ liệu từ một tệp.

Nếu bạn phải đọc các giá trị kiểu dữ liệu cơ bản vào một tệp, hãy sử dụng lớp

FileInputStream. Bạn có thể ghi dữ liệu hướng byte cũng Indữ liệu hướng ký tự thông qua lớp FileInputStream.

Các phương thức của FileInputStream:

Bảng 2.9: Phương thức FileInputStream

Phương thức Mô tả

int available() Trả về số lượng bytes có thể đọc.

int read() Đọc byte dữ liệu từ tập tin.

int read(byte[] b) Đọc tất cả bytes dữ liệu từ tập tin.

int read(byte[] b, int off, int len) Đọc tất cả bytes dữ liệu tại off từ tập tin.

long skip(long x) Đọc tập tin nhưng bỏ qua x.

KHOA CÔNG NGHỆ THÔNG TIN 32 file input stream.

FileDescriptor getFD() Trả về mô tả của tập tin giao tiếp với

stream.

protected void finalize() Đảm bảo phương thức đóng của tập không còn bất kỳ tham chiếu.

void close() Đóng file output stream.

Khai báo java.io.FileInputStream để sử dụng FileInputStream.

Ví dụ:Đọc nội dung tập tin testout.txt và hiển thị ra màn hình.

try(FileInputStream fin = new FileInputStream("testout.txt")){ int i = fin.read(); System.out.println((char)i); fin.close(); }catch(Exception e){ System.out.println(e); }

Ví dụ: Đọc nội dung tập tin từ tập tin testin.txt và hiển thị ra màn hình.

Hình 2.15: Nội dung tập tin sẽ được đọc

try(FileInputStream fin = new FileInputStream("testin.txt")){ int i; while((i=fin.read())!=-1){ System.out.print((char)i); } fin.close(); }catch(Exception e){ System.out.println(e); }

KHOA CÔNG NGHỆ THÔNG TIN 33

BÀI TẬP CHƯƠNG 2

Bài tập 1: Viết chương trình nhập họ tên, điểm thường xuyên, điểm định kỳ từ bàn

phím, tính điểm trung bình và xuất ra màn hìnhvới dạng Họ tên –Điểm thường xuyên –Điểm định kỳ - Điểm trung bình.

Hướng dẫn:

Sử dụng Sytem.in.Read() để nhập dữ liệu

Sử dụng System.out.print, System.out.println, System.out.printf để xuất.

Bài tập 2: Viết chương trình nhập cạnh a và b.Tính và xuất chu vi, diện tích tích hình chữ nhật.

Bài tập 3: Viết chương trình nhập cạnh a và b. Kiểm tra a=b thì dùng công thức tính hình vuông, ngược lại dùng công thức tính hình chữ nhật.

Bài tập 4: Viết chương trình nhập vào số điện sử dụng của tháng và tính tiền điện. Nếu số điện sử dụng từ 0 đến 50 thì giá mỗi số điện là 1000.

Nếu số điện sử dụng trên 50 thì giá mỗi số điện vượt hạn mức là 1200

Bài tập 5: Viết chương trình nhập vào tháng và hiển thị số ngày của tháng.

Bài tập 6: Viết chương trình hiển thị bảng cửu chương.

Bài tập 7: Viết chương trình nhập 2 mảng họ tên và điểm của sinh viên. Xuất 2 mảng đã nhập, mỗi sinh viên có thêm học lực.

Yếu: điểm < 5

Trung bình: 5 <= điểm < 6.5 Khá: 6.5 <= điểm < 7.5 Giỏi: 7.5<= điểm < 9 Xuất sắc: điểm >= 9

Bài tập 8: Ghi ký tự đầu tiên của tên học sinh vào một tập tin.

Bài tập 9: Tạo tập tin txt với nội dung là Donal Trumph. Sử dụng luồng đọc, để đọc nội dung trong tập tin txt vừa tạo và hiển thị ra màn hình.

KHOA CÔNG NGHỆ THÔNG TIN 34

CHƯƠNG 3: XÂY DỰNG GIAO DIỆN NGƯỜI DÙNG

Giới thiệu:

Chương 3 giới thiệu giao diện người dùng, các điều khiển để thiết kế giao diện Swing.

Mục tiêu:

- Thiết kế giao diện người dùng đồ họa sử dụng Swing, - Sử dụng được các điều khiểncơ bản trong Swing.

Một phần của tài liệu Giáo trình lập trình java (ngành hệ thống thông tin) (Trang 28 - 34)