2017-11-12 14 views
-1

파일 movie5.dat가 하드 디스크에 생성되었지만 파일에 데이터가 없습니다! 내가 코드를 실행해도 오류가 발견되지 않고 파일에 바이너리 데이터가 없습니다.왜이 코드는 동영상 데이터를 binery 파일에 쓰지 않습니까?

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