2014-03-01 3 views
0

질문 : DataInputStream을 사용하여 binary.txt에서 행성 정보를 읽고 표준 출력에 행성 세부 정보를 인쇄하는 프로그램을 작성하십시오.DataInputStream을 사용하여 파일에서 이진 데이터를 읽고 콘솔로 인쇄하는 방법?

그러나 아래 프로그램은 IOException을 발생시킵니다. 나는 그 문제를 알아낼 수 없다. 어떤 도움을 주시면 감사하겠습니다.

import java.io.*; 

public class LA4ex2b { 
    public static void main(String[] args) throws IOException { 
     DataInputStream input=null; 
     try 
     { 
      input= new DataInputStream(new FileInputStream("C:/Users/user/workspace/LA4ex2a/binary.txt")); 
      String str; 
      // read until the string read is null i.e. read till end of file 
      while ((str = input.readUTF()) != null) { 
       String token[] = str.split(" "); // tokenizes the string with 
                // space as a delimeter 

       for (int i = 0; i <token.length; i++) 
       { 
        if (IsDouble.IsaDouble(token[i])) 



System.out.print(Double.parseDouble(token[i])); 
        else 
         System.out.print(token[i]); 
       } 
      } 


     } 
     catch (IOException e) { 
      e.printStackTrace(); 
     } 

     finally 
     { 
      if (input!= null) 
       input.close(); 
     } 


    } 

} 
+0

다음은 이진 파일입니다. MercuryA user3367892

+0

_question_에서 파일을 게시하는 것이 더하지의 것 . 주석 (또는 u는 실제 파일을 업로드하고 그것에 대한 링크를 제공 할 수있다) – Astrobleme

+0

이 참으로 이진 파일입니다,하지만 당신은 그것의 형식을 모르는 – fge

답변

2

이진 파일을 읽는 경우 텍스트로 저장된다고 추측 할 수 없습니다.

대신, 각 필드의 데이터 형식이 무엇인지 사전에 알고 "수성"이 당신이 볼 수 있듯이

DataInputStream input= new DataInputStream(new FileInputStream(new File("xyz"))); 
    double d = input.readDouble(); 
    int i = input.readInt(); 
    char c = input.readChar(); 
+0

를 공유 할 txt 파일을 업로드하고 변수에 저장하고 확인하십시오. 문제는 여기에 저장하는 데 사용할 변수의 종류를 모르겠다. – user3367892

+0

이진 파일에 저장된 내용을 찾아야합니다. 그렇지 않으면 시험 버전으로 파일을 리버스 엔지니어링하려고합니다. 오류 – Leo

0

처럼 그들을 읽을 수 있어야합니다 - 행성 이름 -하지만 이중 "1.23"의 텍스트가 표현 , 그래서 그것은 정말로 이진 데이터입니다. 어쩌면 input.readDouble? 항상 javadoc에 대한 인터넷 검색을 수행하십시오.

관련 문제