2014-10-08 2 views
1

이진 파일을 읽고 있는데이 파일의 헤더를 구문 분석해야합니다.DataInputStream을 반복하는 방법은 무엇입니까?

나는 DataInputStream을 설정하고 끝까지 파일을 반복하여 계속 가져와야합니다. 나는 Java를 처음 사용하므로 C# 환경에서이 작업을 수행하는 방법을 알지 못합니다. 순간 나는 다음과 같은 코드가 있습니다

while (is.position != is.length) {        
    if (card == Staff) { 
     System.out.print(card); 
    } else if (card == Student) { 
     System.out.print(card); 
    } else if (card == Admin) { 
     System.out.print(card); 
    } else { 
     System.out.print("Incorrect"); 
    } 
} 

is 내가 만든 입력 스트림입니다, 내가 가진 유일한 오류는 while 루프 위치와 길이 그들이 해결하거나 할 수 없다고에서 시작하는 첫 번째 줄에 필드가 아닙니다.

+0

카드는 어떤 데이터 유형입니까? 또한 무한 루프를 사용하고 읽은 값이 -1 일 때 중단해야합니다. –

+0

카드는 문자열이며 직원 학생 및 관리자는 열거 형입니다. 나는 그것을 처리하기위한 다른 코드를 가지고있다. (나는 이것을 프라이버시를 위해 약간 변경했다.) 정말로 바꿀 필요가있는 것은 is.Position! = is.Length이다. 그래서 파일이 끝나지 않은 동안 말을 할 수있다. – mark602

답변

1

the docs에서 보면 DataInputStream에는 위치 필드가 없습니다. 다른 방법 중 하나를 사용하여 더 많은 데이터를 사용할 수 있는지 여부를 확인할 수 있지만 코드 샘플에서 수행하려는 작업이 명확하지 않습니다.

은 현재 문제의 숫자가 난 당신의 코드를 볼 수 있습니다 : card, Staff, StudentAdmin 유형 String의이다

  1. 경우에, 당신은 equals(String s) 방법을 사용하여하지 비교할 필요 == 참조 평등 (예 : card == Staff이 아닌 card.equals(Staff))
  2. 루프에서 반복하지 않는 것 같습니다. is.position의 값을 변경하기 위해 아무 것도하지 않으면 (실제로 존재하지 않지만 가설 적으로 말하면 ...) 루프를 입력 할 수 있다면 떠나지 않을 것입니다.
  3. card의 값을 변경하지 마십시오. 고정 된 횟수의 반복 작업을 반복한다면 동일한 출력물을 반복해서 인쇄 할 수 있습니다. 이는 의도 한 것과 다를 수 있습니다.
관련 문제