Sử dụng luồng ký tự

1. Nhập Console dùng luồng ký tự

Thường thì việc nhập dữ liệu từ Console dùng luồ ng ký tự thì thuận lợi hơn dùng luồng byte. Lớp tốt nhất để đọc dữ liệu nhập từ Console là lớp BufferedReader. Tuy nhiên chúng ta không thể xây dựng một lớp BufferedReader trực tiếp từ System.in. Thay vào đó chúng ta phải chuyển nó thành một luồ ng ký tự. Để làm điều này chúng ta dùng InputStreamReader chuyển bytes thành ký tự.

Để có được một đối tượng InputStreamReader gắn với System.in ta dùng constructor của InputStreamReader. InputStreamReader(InputStream inputStream)

Tiếp theo dùng đối tượng InputStreamReader đã tạo ra để tạo ra một BufferedReader dùng constructor BufferedReader. BufferedReader(Reader inputReader)

Ví dụ: Tạo một BufferedReader gắn với Keyboard

BufferedReader br = new BufferedReader(new InputStreamReader(System. in));

Sau khi thực hiện câu lệnh trên, br là một luồng ký tự gắn với Console thông qua System.in.

Ví dụ: Dùng BufferedReader đọc từng ký tự từ Console. Việc đọc kết thúc khi gặp dấu chấm (dấu chấm để kết thúc chương trình).

import java.io. *; class ReadChars {

public static void main(String args[]) throws IOException {

char c;

BufferedReader br = newBufferedReader( System.out.println(“Nhap chuoi ky tu, gioi han dau cham. “);

// read characters do {

c = (char) br.read();

System. out.println(c); } while(c != ‘.’);

}

}

Ví dụ: Dùng BufferedReader đọc chuỗi ký tự từ Console. Chương trình kết thúc khi gặp chuỗi đọc là chuỗi “stop” import java.io. *; class ReadLines

public static void main(String args[]) throws IOException {

//create a BufferedReader using System.in BufferedReader br = new BufferedReader(new InputStreamReader(System. in));

String str;

System.out.println(“Nhap chuoi. “); System.out.println(“Nhap ‘stop’ ket thuc chuong trinh. “);

do

{

str = br.readLine(); System. out.println(str); } while(!str.equals(“stop”));

}

2. Xuất Console dùng luồng ký tự

Trong ngôn ngữ java, bên cạnh việc dùng System.out để xuất dữ liệu ra Console (thường dùng để debug chương trình), chúng ta có thể dùng luồng PrintWriter đối với các chương trình “chuyên nghiệp”. PrintWriter là một trong những lớp luồ ng ký   tự.     Việc               dùng các lớp luồ ng    ký    tự         để        xuất     dữ liệu ra Console thường được “ưa chuộng” hơn.

Để xuất dữ liệu ra Console dùng PrintWriter cần thiết phải chỉ định System.out cho luồng xuất.

Ví dụ: Tạo đối tượng PrintWriter để xuất dữ liệu ra Console PrintWriterpw = new PrintWriter(System.out, true);

Ví dụ: minh họa dùng PrintWriter để xuất dữ liệu ra Console import java.io. *; public class PrintWriterDemo {

public static void main(String args[])

{

PrintWriterpw = new PrintWriter(System.out, true); int i = 10;

 

double d = 123.67; double r = i+d

pw.println(“Using a PrintWriter.”);

pw.println(i);

pw.println(d);

pw.println(i + ” + ” + d + ” = ” + r);

}

3. Đọc/ghi File dùng luồng ký tự

Thông thường để đọc/ghi file người ta thường dùng luồng byte, nhưng đối với luồ ng ký tự chúng ta cũng có thể thực hiện được. Ưu điểm của việc dùng luồ ng ký tự là chúng thao tác trực tiếp trên các ký tự Unicode. Vì vậy luồ ng ký tự là chọn lựa tốt nhất khi cần lưu những văn bản Unicode.

Hai lớp luồng thường dùng cho việc đọc/ghi dữ liệu ký tự xuống file là FileReader và FileWriter.

Ví dụ: Đọc những dòng văn bản nhập từ bàn phím và ghi chúng xuống file tên là “test.txt”. Việc đọc và ghi kết thúc khi 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;

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). ”);

do

{

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();

}

}

Kết quả thực thi chương trình Dữ liệu nhập từ Console:

Ví dụ: đọc và hiển thị nội dung của file “test.txt” lên màn hình. import java.io. *; class DtoS {

public static void main(String args[]) throws Exception {

FileReaderfr = new FileReader(“D:\\test.txt”); BufferedReader br = new BufferedReader(fr);

String s;

while((s = br.readLine()) != null)

{

System. out.println(s);

}

fr.close();

}

}

Kết quả thực thi chương trình Nội dung của file test.txt: