2017-11-12 5 views
-1

ファイルmovie5.datはハードディスクに作成されていますが、ファイルにはデータはありません!私が 実行コードにエラーが見つかりませんでした。ファイルにバイナリデータがありません。なぜこのコードはビネリファイルにムービーデータを書き込まないのですか?

import java.nio.file.*; 
import java.io.*; 

public class Main 
{ 
    public static void main(String[] args) 
    { 
     DataOutputStream dos=DOS("e:\\movie5.dat"); 
     movies[] m=movieinfo(); 
     for (movies mm:m) 
     { 
      try { 
       dos.writeUTF(mm.filmname); 
       dos.writeInt(mm.year); 
       dos.writeDouble(mm.price); 
      } 
      catch (IOException e6){System.out.println("I/O write Error."); } 

     } 
    } 

    public static DataOutputStream DOS (String path) 
    { 
     DataOutputStream dos=null; 
     try{ 
      File f1=new File(path); 
      FileOutputStream f2=new FileOutputStream(f1,true); 
      BufferedOutputStream f3=new BufferedOutputStream(f2); 
      dos=new DataOutputStream(f3); 
     } 
     catch (FileNotFoundException e1) 
     { 
      System.out.println("file not found."); 
      System.exit(0); 
     } 
     return dos; 
    } 

    public static movies[] movieinfo() 
    { 
     movies[] moviedata=new movies[3]; 
     moviedata[0]=new movies("Gladiator",2001,14.5); 
     moviedata[1]=new movies("Matrix",2004,25.56); 
     moviedata[2]=new movies("Spider Man",2017,32.32); 
     return moviedata; 
    } 

    private static class movies 
    { 
     String filmname; 
     int year; 
     double price; 

     public movies(String filmname, int year, double price) 
     { 
      this.filmname=filmname; 
      this.year=year; 
      this.price=price; 
     } 
    } 
} 
+1

あなたは 'DataOutputStream'をクローズしておらず、例外を飲み込んでいる、例外を無視しています。例外の代わりに独自のメッセージを出力します。このようなコードは書かないでください。 – EJP

答えて

0

BufferedOutputStreamを決してフラッシュしたり閉じたりしないでください。データが実際にディスクに書き込まれる前に、プログラムが終了します。

+0

ここで閉じられるのは、「DatatOutputStream」、つまり最も外側のストリームです。 – EJP

関連する問題