Khóa học free Bài 30: Sử dụng luồng ký tự trong Java

Thảo luận trong 'Java cơ bản' bắt đầu bởi Tiasangmoi92, 21/8/13.

  1. Tiasangmoi92

    Tiasangmoi92 Super Moderator

    Lượt xem: 10,389
    /* Bài viết thuộc loạt bài hướng dẫn trong "Khóa Học Lập Trình Java Miễn Phí"
    trên diễn đàn Android.Vn, bạn có thể vào đây đọc

    để hiểu hơn về khóa học và tham gia ngay cùng mọi người;) */

    download

    Ở những bài trước, mình đã giới thiệu với các bạn việc sử dụng luồng byte để nhập và xuất dữ liệu ký tự. Nhưng trong nhiều trường hợp luồng byte không phải là cách tốt nhất để quản lý nhập xuất dữ liệu ký tự. Trong lập trình Java có kiểu luồng ký tự phục vụ riêng cho việc nhập xuất dữ liệu trên luồng. Mức trên cùng là 2 lớp trừu tường ReaderWriter. Các lớp dẫn xuất từ Reader Writer hỗ trợ thao tác trên các luồng ký tự Unicode.
    - Những phương thức định nghĩa trong lớp trừu tượng

    Untitled

    Bài này sẽ là nhập xuất ký tự và chuỗi sử dụng luồng ký tự, bài sau mình sẽ giới thiệu cách đọc ghi file dùng luồng ký tự!

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

    - Để đọc dữ liệu nhập từ Console thì lớp tốt nhất là lớp BufferdReader. Nhưng ở đây, chúng ta không có cách nào xây dựng 1 lớp BufferedReader trực tiếp từ System.in vì thế nên cần chuyển nó thành luồng ký tự bằng cách dùng InputStreamReader để chuyển byte 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ụ 1: Tạo một đối tượng BufferedReader gắn với bàn phím:
    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.
    Tiếp theo ta sẽ 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).
    PHP:
    package javaandroidvn;
     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
     
    public class 
    JavaAndroidVn {
     
        public static 
    void main(String[] argsthrows IOException {
            
    char c;
            
    BufferedReader br = new BufferedReader(
                    new 
    InputStreamReader(System.in));
     
            
    System.out.println("Nhập chuỗi ký tự, kết thúc bằng dấu chấm .");
     
            do {
                
    = (charbr.read();
                
    System.out.println(c);
            } while (
    != '.');
     
        }
    }
    **Ví dụ 2: Dùng BufferedReader đọc chuỗi ký tự từ Console. In ký tự vừa nhập vào!
    PHP:
    package javaandroidvn;
     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
     
    public class 
    JavaAndroidVn {
     
        public static 
    void main(String[] argsthrows IOException {
     
            
    // Tạo đối tượng BufferedReader sử dụng System.in
            
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            
    String str;
            
    System.out.print("Nhập chuỗi: ");
            
    //Nhập chữ không dấu thôi nhé!
            
    str br.readLine();
            
    System.out.println("Chuỗi vừa nhập là: " str);
        }
    }
    2, Xuất dữ liệu ra Console dùng luồng ký tự

    Tiếp tục sẽ là 1 cách khác để xuất dữ liệu ra Console. Ở đây mình nhắc tới lớp PrinWriter, nó là 1 trong các lớp luồng ký tự. Ta cần phải chỉ định System.out cho luồng xuất.

    **Ví dụ 3: Tạo đối tượng PrintWriter để xuất dữ liệu ra Console, dùng lệnh:
    PrintWriter pw = new PrintWriter(System.out, true);
    Tiếp theo dùng PrintWriter để xuất dữ liệu ra Console
    PHP:
    package javaandroidvn;
     
    import java.io.IOException;
    import java.io.PrintWriter;
     
    public class 
    JavaAndroidVn {
     
        public static 
    void main(String[] argsthrows IOException {
            
    int i 2013;
            
    String str "Android.Vn ";
            
    //Xuất dữ liệu sử dụng PrintWriter
            
    PrintWriter pw = new PrintWriter(System.outtrue);
            
    pw.println("Using a PrintWriter.");
            
    pw.println(str+i);
     
        }
    }
    [​IMG]

    Bài tập về nhà::D
    Làm lại các ví dụ trên! Mọi thắc mắc các bạn có thể bình luận phía dưới, mọi người cùng nhau thảo luận!

    (Chú ý: Các bạn nên tự giác làm bài tập, hoàn thiện rồi đăng lên, các bài bạn đã làm, nên để code trong thẻ code - chọn thẻ PHP cho rõ ràng và để ẩn code trong thẻ ẩn spoiler, để khi click vào mới hiện code lên , trước khi thử sức tự làm, bạn không nên nhìn code của các bạn khác đã đăng nhé;))

    [​IMG]

    My Facebook: https://www.facebook.com/tiasangmoi

    Bài viết đăng lên diễn đàn khác vui lòng ghi rõ nguồn: Android.Vn
    luồng ký tự java, bufferedReader, printwriter, input java, input output console
  2. zquangu112z

    zquangu112z Cuộc sống là không chờ đợi!

    Tại sao khi mình ghi pw.print(str+i) thì nó lại không chạy mà bắt buộc phải là .println mọi người?
  3. phongvanptit

    phongvanptit New Member

    Mình cũng không rõ lắm nhưng theo mình là do khi sử dụng print() thì luồng ký tự không được đóng lại. Khi sử dụng println() thì luồng ký tự được đóng lại bằng cách xuống dòng. Trong ví dụ trên khi mình sử dụng print() và thêm câu lệnh pw.close(); thì chạy bình thường.
    Còn tại sao phải close thì mình cũng không biết! :)
    P/s: Em chỉ đưa ra ý kiến vậy thôi, các cao nhân đừng gạch đá em nhá! :)
  4. nguyenthanhTuyen

    nguyenthanhTuyen New Member

    ở ví dụ 1 sao mình nhập dấu chấm chương trình ko kết thúc nhỉ.vẫn phải nhấn enter mới kết thúc =(((

Chia sẻ trang này