01/10/2018, 00:39

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

Quân viết 02:42 ngày 01/10/2018

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){
       }
   }
}
Luong Nguyen viết 02:45 ngày 01/10/2018

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

FileWriter writer = new FileWriter(f);
writer.println(a[i]);
Pete Houston viết 02:54 ngày 01/10/2018

đ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

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

Bài liên quan
0