Vấn đề đọc ghi file trong java

chào mọi người mình có một đoạn code nho nhỏ sau

public class NewClass {
    public static void main(String[] args) throws FileNotFoundException, IOException {
        String path="D:\\JavaApplication8\\nhiendoa.txt";
        File f=new File(path);
        Scanner s=new Scanner(System.in);
        OutputStream os= new FileOutputStream(f);
        DataOutputStream dos=new DataOutputStream(os);
        int [] a= new int[5];
        for(int i=0;i<5;i++)
        {
            System.out.print("xin chao moi cac ban nhap phan tu :");
            a[i]=s.nextInt();
            dos.write(a[i]);
        }
    }
}

đoạn code trên chạy ngon lành ok ko vấn đề gì nhưng cho mình hỏi là tại sao khi mình mở cái file của mình ra thì lại ko hiện ra cái gì cả và sửa như thế nào để cho cái file đó khi mở ra nó là các chữ số mà mình đã nhập vào thanhk các bác

cần phải close file lại sau khi xong việc, hơn nữa k nên throw IOException như thế mà không có cơ chế handle close file là rất nguy hiểm. Nên sửa lại thanh:

OutputStream os = null;
DataOutputStream dos = null;
try {
    os = new FileOutputStream(f);
    dos = new DataOutputStream(os);
    int [] a= new int[5];
    for(int i=0;i<5;i++) {
        System.out.print("xin chao moi cac ban nhap phan tu :");
        a[i]=s.nextInt();
        dos.write(a[i]);
    }
} catch (IOException e){
    // do anything
} finally{
   if (dos != null){
       try{
           dos.close();
       } catch (IOException e1){
       }
   }
    if (os != null){
       try{
           os.close();
       } catch (IOException e2){
       }
   }
}

Bạn nên dùng FileWriter thay cho DataOutputStream.

FileWriter writer = new FileWriter(f);
writer.println(a[i]);

Mở stream thì phải close lại data mới được flush vào trong file.

1 Like

Flush trong Java có ý nghĩa gì thế ạ. Em chưa hiểu phần này

Đẩy dữ liệu từ luồng hiện tại vào bộ nhớ (tập tin).
Một số lớp (cũng tuỳ trường hợp), các thao tác ghi dữ liệu sẽ lưu tạm ở RAM, nếu muốn đẩy ngay các dữ liệu vào tập tin thì dùng flush().

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?