Kết quả 1 đến 3 của 3
  1. #1
    Ngày tham gia
    Aug 2015
    Bài viết
    0

    Vào ra dữ liệu trong Java (Input/Output)

    Tóm tắt: Ngôn ngữ Java™ cung cấp hầu hết những gì mà các lập trình viên chuyên nghiệp mong đợi đối với một ngôn ngữ lập trình và thậm chí là đối với một ngôn ngữ hướng-đối tượng. Thế nhưng, ngoài những điều căn bản, ngôn ngữ Java còn cung cấp một số công cụ có ích để tạo ra các chương trình tinh vi hơn. Hướng dẫn này sẽ giới thiệu cho bạn một số trong các đặc tính nâng cao hơn này của ngôn ngữ Java thường được thấy trong các dự án phát triển công nghệ Java điển hình.

    1.Các tệp tin (File)
    Lớp File định nghĩa một nguồn tài nguyên trên hệ thống tệp tin của bạn. Nó gây phiền toái, đặc biệt là cho việc kiểm thử, nhưng đó là thực tế mà các lập trình viên Java phải đối phó với nó. Đây là cách bạn khởi tạo một cá thể File:


    Mã:
    File aFile = new File("temp.txt");

    Đoạn mã này tạo ra một cá thể File với đường dẫn temp.txt trong thư mục hiện tại. Chúng ta có thể tạo một File với chuỗi ký tự đường dẫn bất kỳ như mong muốn, miễn là nó hợp lệ. Lưu ý rằng khi có đối tượng File này không có nghĩa là tệp tin mà nó đại diện thực sự tồn tại trên hệ thống tệp tin ở vị trí dự kiến. Đối tượng của chúng ta chỉ đại diện cho một tệp tin thực tế có thể có hoặc có thể không có ở đó. Nếu tệp tin liên quan không tồn tại, chúng ta sẽ không phát hiện ra là có một vấn đề cho đến khi chúng ta cố đọc hay viết vào nó. Đó là một chút khó chịu, nhưng nó có ý nghĩa.
    Ví dụ, chúng ta có thể hỏi xem File của ta có tồn tại hay không:


    Mã:
    aFile.exists();
    Nếu nó không tồn tại, chúng ta có thể tạo nó:


    Mã:
    aFile.createNewFile();
    Khi sử dụng các phương thức khác trên File, chúng ta cũng có thể xóa các tệp tin, tạo các thư mục, xác định xem một tài nguyên trong hệ thống tệp tin là một thư mục hay là một tệp tin, v.v.. Tuy nhiên, hoạt động sẽ thực sự xảy ra, khi chúng ta ghi vào và đọc ra từ tệp tin. Để làm điều đó, chúng ta cần phải hiểu thêm một chút về các luồng.
    2.Các luồng và cách sử dụng



    Đọc và viết các tệp tin Có một số cách để đọc ra từ và viết vào một File. Người ta có thể cho rằng cách tiếp cận đơn giản nhất diễn ra như sau:
    Tạo một FileOutputStream trên File để viết vào nó.
    Tạo một FileInputStream trên File để đọc từ nó.
    Gọi read() để đọc từ File và write() để viết vào File.
    Đóng các luồng, dọn dẹp sạch sẽ nếu cần thiết. Các mã có thể trông giống như sau:


    Mã:
    try {
        File source = new File("input.txt");
        File sink = new File("output.txt");
     
        FileInputStream in = new FileInputStream(source);
        FileOutputStream out = new FileOutputStream(sink);
        int c;
     
        while ((c = in.read()) != -1)
          out.write(c);
     
        in.close();
        out.close();         
    } catch (Exception e) {
        e.printStackTrace();
    }
    Ở đây chúng ta tạo ra hai đối tượng File: một FileInputStream để đọc từ tệp tin nguồn và một FileOutputStream để viết tới File kết quả. (Lưu ý: Ví dụ này đã được điều chỉnh từ ví dụ CopyBytes.java trong Java.sun.com). Chúng ta sau đó đọc vào từng byte của dữ liệu đầu vào và ghi nó vào kết quả đầu ra. Sau khi đã xong, chúng ta đóng các luồng. Có lẽ là khôn ngoan khi đặt một lời gọi close() vào trong khối cuỗi cùng (finally). Tuy nhiên, trình biên dịch của ngôn ngữ Java sẽ còn yêu cầu bạn phải nắm bắt nhiều trường hợp ngoại lệ khác có thể xảy ra, điều này có nghĩa là cần một mệnh đề catch khác nữa nằm trong khối finally của bạn. Có chắc chắn đáng làm không? Có thể. Vậy là bây giờ chúng ta có một cách tiếp cận cơ bản để đọc và viết. Nhưng sự lựa chọn khôn ngoan hơn, và về một vài khía cạnh, sự lựa chọn dễ dàng hơn, là sử dụng một số luồng khác mà chúng ta sẽ thảo luận trong phần tiếp theo.
    3.Các luồng có bộ đệm
    Có một số cách để đọc ra và ghi vào một File, nhưng cách tiếp cận điển hình và thuận tiện nhất diễn ra như sau:
    Tạo một FileWriter trên File.
    Gói FileWriter trong một BufferedWriter.
    Gọi write() trên BufferedWriter mỗi khi cần thiết để viết các nội dung của File, thường ở cuối mỗi dòng cần viết ký tự kết thúc dòng (đó là,
    ).
    Gọi flush() trên BufferedWriter để làm rỗng nó.
    Đóng BufferedWriter, dọn dẹp sạch nếu cần thiết.


    Mã:
    try {
        FileWriter writer = new FileWriter(aFile);
        BufferedWriter buffered = new BufferedWriter(writer);
        buffered.write("A line of text.
    ");
        buffered.flush();
    } catch (IOException e1) {
        e1.printStackTrace();
    }
    Ở đây, chúng ta tạo ra một FileWriter trên aFile, sau đó chúng ta gói nó trong một BufferedWriter. Thao tác viết có bộ đệm hiệu quả hơn là đơn giản viết mỗi lần một byte. Khi chúng ta đã thực hiện viết từng dòng (mà chúng ta tự kết thúc bằng
    ), chúng ta gọi flush() trên BufferedWriter. Nếu chúng ta không làm như vậy, chúng ta sẽ không nhìn thấy bất kỳ dữ liệu nào trong tệp tin đích, bất chấp mọi công sức cố gắng viết tệp tin này. Khi chúng ta có dữ liệu trong tệp tin, chúng ta có thể đọc nó bằng các mã tương tự đơn giản:


    Mã:
    String line = null;
    StringBuffer lines = new StringBuffer();
    try {
        FileReader reader = new FileReader(aFile);
        BufferedReader bufferedReader = new BufferedReader(reader);
        while ( (line = bufferedReader.readLine()) != null) {
            lines.append(line);
            lines.append("
    ");
        }
    } catch (IOException e1) {
        e1.printStackTrace();
    }
    System.out.println(lines.toString());
    Chúng ta tạo ra một FileReader, sau đó gói nó trong một BufferedReader. Điều đó cho phép chúng ta sử dụng phương thức thuận tiện readLine(). Chúng ta đọc từng dòng cho đến khi không có gì còn lại, viết thêm mỗi dòng vào cuối StringBuffer. của chúng ta. Khi đọc từ một tệp tin, một IOException có thể xảy ra, do đó chúng ta bao quanh tất cả logic đọc tệp tin của chúng ta bằng một khối try/catch.

  2. #2
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    hay. Cảm ơn bạn. Post lâu vậy mà ít người quan tâm nhỉ

  3. #3
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Trích dẫn Gửi bởi thanlong2910
    hay. Cảm ơn bạn. Post lâu vậy mà ít người quan tâm nhỉ
    Bắt đầu từ phiên bản Java 1.4 Sun đã bổ sung thêm một cách khác để quản lý các thao tác vào ra đó là nio
    xem thêm->
    http://****************/threads/3-cach-doc-file-su-dung-new-io.43818/

 

 

Các Chủ đề tương tự

  1. Sự khác nhau giữa Abstract Class và Interface trong Java
    Bởi seobookin trong diễn đàn Java & JSP
    Trả lời: 0
    Bài viết cuối: 03-30-2015, 10:31 PM
  2. Hỏi cách giải quyết lỗi ''No audio output device is installed''
    Bởi kevinsorbo trong diễn đàn Tư Vấn, Hỏi Đáp Về Phần Cứng
    Trả lời: 8
    Bài viết cuối: 02-08-2015, 04:21 AM
  3. Java SE Runtime Environment 9 Build b29-Chạy những ứng dụng cần java
    Bởi thuydt93 trong diễn đàn Hệ Thống Và Bảo Mật
    Trả lời: 5
    Bài viết cuối: 09-08-2014, 04:39 PM
  4. Java SE Runtime Environment 9 Build b27-Hỗ trợ các ứng dụng đòi java trên máy tính
    Bởi annkhsouth trong diễn đàn Hệ Thống Và Bảo Mật
    Trả lời: 3
    Bài viết cuối: 08-23-2014, 03:37 AM
  5. Hỏi chút về code tìm kiếm trong java
    Bởi secutechvn trong diễn đàn Hỏi Đáp, Thắc Mắc, Yêu Cầu
    Trả lời: 0
    Bài viết cuối: 06-01-2012, 06:37 AM

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 08:05 PM.
Diễn đàn sử dụng vBulletin® Phiên bản 4.2.5 Beta 3.
Bản quyền của 2020 vBulletin Solutions, Inc. Tất cả quyền được bảo lưu.
Ban quản trị không chịu trách nhiệm về nội dung do thành viên đăng.