2015-01-04 2 views
0

꼬리 프로그램을 구현하려고하고 파일의 마지막 n 바이트를 인쇄하려고합니다. RandomAccessFile 변수를 사용하여 텍스트 파일의 데이터를 저장했습니다.바이트에서 데이터 가져 오기

-n1 
65109710979710979710810979710810510510979710910659711010510979711410011897114107109797114100119111108102106597114111110 

방법에 적절히 바이트 배열에서 데이터를 검색 않습니다 나는 데이터를 검색하고이 콘솔에 인쇄하려고 할 때, 나는 이런 식으로 뭔가를 받고 있어요?

RandomAccessFile raf = new RandomAccessFile(file, "r"); 
      byte[] b = new byte[n]; 
      raf.readFully(b, 0, n); 
      for (int i = 0; i < n; i++) { 
       System.out.print(b[i]); 
      } 
+0

해당 결과를 생성하는 코드를 게시 할 수 있습니까? –

+0

대신'System.out.println (b [i])'를 시도하십시오. 그러면 각 번호마다 새 줄이 시작됩니다. 너가 원하는게 그거야? –

+0

내가 읽고있는 파일은 단어가있는 텍스트 파일입니다. 따라서, 나는 어떤 단어가 콘솔에 쓰여지기를 기대한다. 나는 왜이 숫자들이 인쇄되고 있는지 이해하지 못한다. –

답변

2

당신은 byte 값을 인쇄 :

내 코드입니다. 예 : 당신은 다음과 같은 변환을 할 수있는 인쇄 char에 (루프에서와 같이) 각 byte을 변환하려면

System.out.println(new String(b)); 

: 당신이 System.out.println 인쇄 할 수 있습니다 String 바이트의 배열은 다음을 시도

for (int i = 0; i < 10; i++) { 
    char c = (char) (b[i] & 0xFF); 
    System.out.print(c); 
} 

byte은 크기가 1 바이트 (8 비트) 인 반면 Java 16 비트 (2 바이트)는 char입니다. 따라서 인쇄 된 바이트는 의미가 없으며 전체 문자가 아닙니다.

자세한 내용은 this link을 참조하십시오.