나는 내 생각에 매듭이 있습니다 ... 저는 int 0을 파일에 세 번 쓰고 있습니다. 시도한 \ n (0x0A) 및 \ r (0x0D)). 다시 여기에서 그것을 읽을 바이트readline은 파일에서 n 또는 r을 무시합니다. (텍스트 대 바이너리)
00 00 00 00 0D 00 00 00 00 0D 00 00 00 00 0D
에있는 파일의 내용은, 내가하는
FileInputStream is = new FileInputStream(theFile);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
그러나 포장
String s = br.readLine();
내 첫 번째 호출은 파일 (위치 15)보다는 내가 기대 한 것처럼 위치 (5) (즉, 0x0d로)에서 중지의 끝으로 읽습니다. 아무도 내가 어떻게 작동하는지 오해하고있는 것을 볼 수 있습니까? 감사합니다. 아래의 의견에 따라
추가 정보는 : 코드 내가이에서 얻을 출력이
input stream position: 0
input stream position: 15
line: 0
line:
line:
입니다
public class TestApp4 {
public static void main(String args[]) {
try {
File theFile = new File("Test.dat");
FileInputStream is = new FileInputStream(theFile);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
System.out.println("input stream position: " + is.getChannel().position());
String s = br.readLine();
byte[] bs = s.getBytes();
int i = ByteBuffer.wrap(bs).getInt();
System.out.println("input stream position: " + is.getChannel().position());
System.out.println("line: " + i);
s = br.readLine();
System.out.println("line: ");
s = br.readLine();
System.out.println("line: ");
br.close();
} catch (Throwable e) { e.printStackTrace(); }
}
}
내가 잘못 어디로 갔는지 난을 참조하십시오. 각
정확한 위치에서 깨집니다. 내 혼란은 그 라인의 끝보다는 오히려 파일의 끝에 고급
is.getChannel().position()
고급에서 발생했다. 나는이 값이 문자열로 읽은 마지막 위치를 나타내는 것을 오해했다. 이것은 분명히 틀렸다. 큰 스트림으로 읽는 위치 인 것처럼 보입니다. 내 booboo 밖으로 정렬하는 데 도움 주셔서 감사합니다.
정확히 "파일의 끝까지 읽는다는 것을 의미합니까? "? 'readLine'이 단일 라인이 아닌 완전한 String을 리턴한다는 것을 의미합니까? – Lothar
줄의 끝에서 멈추지 않는다고 생각하는 이유는 무엇입니까? 왜 바이너리 데이터를 문자열로 읽으려고하는지 모르지만 방금 시도했는데 첫 번째 행만 읽습니다. 더 많은 코드를 게시하십시오. – Oleg