System.in.read(int[],int,int) 이상한게 있어요.!
가을빛
import java.io.*;
public class ReadCharactersOffset
{
public static void main(String args[]){
try{
int bufferCapacity = 80;
int size=0;
int dataRead;
byte buffer[] = new byte[bufferCapacity];
while((dataRead = System.in.read(buffer, size, bufferCapacity-size)) = 0){
size += dataRead; // 다음 문장을 읽을 수 있도록 한다.
System.out.print(bufferCapacity-size);
}
System.out.write(buffer, 0, size);
}catch(IOException e){
System.err.println(스트림으로부터 데이터를 읽을 수 없습니다.);
}
}
}이 예제는 책에 있던건데요.
저 코드에 쓰인 read() 메소드는 스트림으로부터 bufferCapacity-size개의 데이터를 읽어서
buffer배열의 size위치부터 차례로 저장되는 거잖아요.
bufferCapaciry-size 부분이 좀 이상합니다.만약에 처음에 안녕하세요라는 말을 입력하고 엔터를 쳤다고 가정하면
스트림에 10바이트+케리지리턴+뉴라인값해서 총 12바이트의 메모리를(?) 사용하게 됩니다.
그래서 offset은 12가 되어서 다음에 입력받을 내용을 buffer의 12부터 쓰게 됩니다.
그런데입력받은 스트림에서 처음에 bufferCapacity-size(80이죠)을 입력받고 다음에
는(80-12) 68만큼의 데이터를 읽어오는 까닭은 무엇인지요? ㅠㅠ
스트림에 있는안녕하세요를 가지고 오려면
그냥 size(10)만저 자리에 들어가면 되는거 아닌가요??
고수님들의 답변을 ㅠㅠ
-
지지않는 2026-01-24
즉 \안녕하세요\를 입력하였으면 님이 말씀하신대로 12바이트를 입력 받습니다. 하지만 이것은 처음에 정해준 버퍼크기(80바이트)보다 작기 때문에 계속 입력받으려고 대기합니다. 80바이트가 다 찰때까지 무한으로 대기합니다. 그러다가 80바이트가 다 입력되면 드디어 출력하러 갑니다. 출력내용은 80바이트의 모든 내용이구요.
님이 원하시는 \안녕하세요\만 출력하려면 System.out.write(buffer, 0, 10); 을 출력하면 되겠군요 -
월향 2026-01-24
프로그램을 보니 버퍼의 크기를 80으로 잡아 놓고 그 곳에 입력 데이터가 꽉 찰때까지 계속 입력을 받습니다.
즉 80바이트를 모두 입력 받아야지만이 출력하는 곳으로 가는 것이지요. 출력도 버퍼안의 모든 내용(80바이트)를 출력하는 것이구요.
| 번호 | 제 목 | 글쓴이 | 날짜 |
|---|---|---|---|
| 2752024 | 소숫점 뺄셈 !! ㅠㅜ | 초롬 | 2026-10-20 |
| 2751970 | 자바 게임 만들려는데 부탁드립니다 (1) | 라온제나 | 2026-10-19 |
| 2751908 | 자바스크립트 처리속도를 체크할 수 있는 방법 있나요? (1) | 테이 | 2026-10-19 |
| 2751822 | 그누보드 아이프레임으로 구현했는데 제목 클릭해서 들어가면 푸터가 동동...떠다녀요 | 내꺼하자 | 2026-10-18 |
| 2751790 | 자바 그래픽 관련을 공부하고 싶은데요.. 어디 좋은 사이트나 책 없을까요?? (1) | 큰재 | 2026-10-18 |
| 2751733 | CTF가머죠? (5) | 두동 | 2026-10-17 |
| 2751709 | 배열부분 궁금한 부분이있습니다. | 딸기우유 | 2026-10-17 |
| 2751677 | 포인터 책을 보다가,,, (2) | 동백 | 2026-10-17 |
| 2751648 | 익스플로 버전에 따라서 생기는 공백.. (1) | 모아 | 2026-10-17 |
| 2751623 | DEL 태그의에서 선굵기 및 컬러지정이 가능한가 해서요~ (4) | 비치나 | 2026-10-16 |
| 2751573 | 테마 업로드 에러.. (1) | 꽃 | 2026-10-16 |
| 2751548 | 수학? 물리?? (3) | 찬늘 | 2026-10-16 |
| 2751461 | 상단네비 fixed ie6 핵 해결방안이 있을까요? | 맑다 | 2026-10-15 |
| 2751436 | 레이아웃을 잡고 코딩을 하는데 드림위버에서의 결과와 IE에서 결과가 다르게 나오네요. (3) | 키클 | 2026-10-15 |
| 2751403 | 형들좀도와주세요string compression (1) | 알렉산더 | 2026-10-14 |
| 2751349 | 링크 다운로드하기 | 팬지 | 2026-10-14 |
| 2751295 | c++한번도 손않댄 사람이... | 날위해 | 2026-10-13 |
| 2751267 | 플래시8 사용에서 플레이어 만들었는데요 (1) | 블1랙캣 | 2026-10-13 |
| 2751182 | 회원가입 | 파랑새 | 2026-10-12 |
| 2751152 | 소셜 플러그인 문제입니다. | 얀 | 2026-10-12 |
