Ra vào dữ liệu từ file với Java

1.Ghi vào File

import java.io.*; //không được thiếu khai báo này
public class LuyenTap{
—- public static void main(String args[]) throws IOException{
—- String str;
—-FileWriter fw;
—-BufferedReader br = new BufferedReader(new inputStreamReader(System.in));
—-try{
—-—-fw = new FileWriter(“D:\\text.txt”);
—-}
—-catch(IOException exc){
—-—-System.out.println(“khong mo duoc file”);
—-—-return ;
—-}
—- System.out.println(“Hãy nhập vào một chuỗi ký tự và ‘stop’ để kết thúc chương trình”);
—- do{
—-—- System.out.print(“:”);
—-—- str = br.readLine();
—-—- if(str.compareTo(“stop”)==0)break;
—-—- str = str + “\n”;
—-—- fw.write(str);
—-—- }
—-while(c.compareTo(“stop”)!=0);
—-—-fw.close();
—-}

}

Cần thiết khai báo ngoại lệ sau: throws IOException.

Trong chương trình trên ta khai báo 3 biến:

Biến thứ nhất có kiểu string là str, biến này lưu dữ thông tin được truyền vào từ Buffere.

Biến thứ 2 là fw thuộc luồng FileWriter là luồng giành cho việc nghi thông tin lên file, Biến này trực  tiếp làm việc với file!

Biến thứ 3 là một đối tượng của lớp BuffereReader, tuy nhiên không thể xây dựng một lớp BuffereReader từ System.in nên lòng vòng để đạt được mục địch phải chuyển lớp này thành một luồng ký tự. Và để cho nhanh Gió viết cú pháp của nó luôn như sau: BuffereReader br = new BuffereReader(new InputStreamReader(System.in)); sau dòng này thì biến br là một luồng ký tự gắn với Console thông qua “System.in”. Biến này trực tiếp làm việc với các thông tin được đưa vào từ bàn phím nhằm chuyển vào biến str rồi sau đó được ghi ra file nhờ biến fw. Có thể tưởng tương str là một trạm trung chuyển! br–>str–>fw

Trong chương trình bé nhỏ trên có chứa cú pháp bắt lỗi “try…catch” sẽ trình bày vào dịp khác.

2. Đọc từ file

import java.io.*;
class LuyenTap{
public static void main (String[] args) throws IOException {
FileReader fr = new FileReader(“D:\\matranke.txt”);
BufferedReader br = new BufferedReader(fr);
String s;
while((s = br.readLine()) != null){
System.out.println(s);
}
fr.close();
}
}

Không cần kiểm tra vì java đã kiểm tra, nếu file không tồn tại nó sẽ báo lỗi luôn!

Gió thấy rằng bài viết này chỉ thể hiện đựơc một chút xíu của bản chất Java. Các bạn muốn hiểu rõ các luồng, cách làm việc của chúng với file thì cần đọc sách. Hai đoạn code trên như mỳ ăn liền vậy,có thể tìm thấy nhiều trong các sách hướng dẫn nhưng mà theo Gió nghĩ cần hiểu rõ và tự phân tích vai trò của từng biến, từng dòng lệnh!

8 thoughts on “Ra vào dữ liệu từ file với Java

  1. Mình muốn hiểu rõ hơn về nhiệm vụ của try và catch trong đoạn code trên, bạn có thể giải thik rõ hơn ko?? Mình mới bắt đầu học java😀 Thx!!

  2. khi không thể thực hiện lệnh trong khối try, nó sẽ thực hiện các lệnh trong khối catch bạn ạ. Try{} catch{} là câu lệnh thường dùng để bắt lỗi khi chúng ta truy cập đến tài nguyên hệ thống như file trên ổ đĩa, hay kết nối mạng.

  3. cám ơn bạn đã giới thiệu về đoạn code. nhưng xem ra việc thực thi bị lỗi. Bạn có thể xem lại và cho ý kiến khác ( đoạn code đã thực thi đúng). được không?
    Thanks..

  4. chủ topic ui. cho tui hỏi cách vào ra dữ liệu kiểu đối tượng được ko.
    đại khái thế này nhé.
    như bạn hướng dẫn ở trên là gi dữ liệu kiểu chuỗi.

    mình có một cái đối tượng là lý lịch có vài thuột tính như : tên, sinh nhat, giới tính, sở thích . . . . mình muốn khi nhấn vào một button thì save đối tượng này lại để lần sau mở thi làm thế nào. yêu cầu là khi save phải mở ra dialog save gõ tên file cần save. chỉ mình cái save và open lai lun nhé.

    ông thầy không dạy gi hết mà bắt làm toàn là khủng hen a.
    giúp mình với nhé cảm ơn bạn nhìu
    YM : phamduythong3000

  5. bạn ạ, về cơ bản câu hỏi của bạn muốn giải quyết được thì cần có kiến thức về SWing. Nó không đơn giản chỉ là ra vào dữ kiệu. Bạn có thể tự nghiên cứu và viết code. Nếu có gì khó khăn, bạn có thể gửi code lên và Gió có thể sủa lỗi cho. hoặc email: hahonga3@yahoo.com.

  6. trong phần ghi vào file chỉ cần sửa 2 lỗi là ok
    inputStreamReader(System.in)); ==> InputStreamReader(System.in));
    (Viết hoa chữ ” i “);
    while(c.compareTo(“stop”)!=0); ==> while(str.compareTo(“stop”)!=0);
    (thay “c” bằng ” str “);
    còn code hoàn toàn đúng,test ok !

  7. tại sao đoạn code báo lỗi ( While((s = br.readLine())!=null))
    mọi người giải thích hộ cái . thanks

    PS:// ở phần khai báo String s -> bạn sửa thành String s = “”; rồi chạy lại thử xem

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s