2009-07-10 2 views
5

자바 코드에서 클라이언트로부터 파일을 가져 와서 파일로 변환하는 기능이 있습니다. 여기에이 줄이 있습니다 :파일을 만들 때 8192 바이트

byte[] buffer = new byte[8192]; 

8192 바이트 (8 kb)는 무엇을 의미합니까?

This is one of the responses that I got이 코드를 이해하고 있는지 확인하고 싶습니다.

+1

약 8.2 kb의 데이터를 저장할 버퍼를 만드는 중입니다 ... –

+0

질문의 소스 코드를 참조하여 http://stackoverflow.com/questions/1111130/basic-file- upload-in-gwt/1111606 # 1111606 –

+3

@Ed Swangren : 8.2? 그거 어디서 났어? 정확하게 8.0kb처럼 보입니다. 1024 * 8. – Beska

답변

10

버퍼를 사용하여 한 번에 8KB 블록을 읽고 쓸 수 있습니다. 이 숫자는 상당히 임의적이지만 성능상의 이유로 파일을 쓸 때 512 바이트의 배수를 사용하는 것이 좋으며, 디스크 클러스터 크기의 배수가되는 것이 좋습니다. 대부분의 경우 8kB는 적당한 버퍼 크기입니다.

+0

왜 512의 배수입니까? – Pacerier

1

짐작할 수 있다면, 파일에서 읽는 데 사용하는 공간입니다. 코드의 나머지가 없으면 모든 것을 읽으 려하고 8k로 벼락치기를하거나 8k 씩 읽어 들이고 파일에 덤핑하면 말할 수 없습니다.

+0

이 답변을 확인하십시오 : http://stackoverflow.com/questions/1111130/basic-file-upload-in-gwt/1111606#1111606 여기가 그 번호입니다 – Maksim

+4

그렇다면 한 번에 8k를 복사하고 다음 8k 청크를 잡기 전에 파일로 보냅니다. 8K는 함수를 호출하는 바퀴를 회전시키는 것과 파일의 끝에 도달 할 때 공간을 낭비하는 것 사이에서 합리적인 균형을 유지하기 때문에 많은 파일 시스템에서 블록 크기에 상당히 가깝기 때문에 8K가 적당하다는 것입니다. –

+0

배열 선언/정의를 제외하고 소스 코드를 표시하지 않으면 어떻게 대답 할 수 있습니까? –

2

이것은 바이트 배열의 크기로, 버퍼가 한 번에 8192 바이트를 유지한다는 것을 의미합니다.

2

8192는 네트워크를 통해 보내는 패키지의 최대 크기입니다. char 버퍼 [8192];/* 단일 패킷은 일반적으로 8192 바이트보다 크지 않습니다. */ 512 바이트가 너무 작습니다.

+2

해당 주장에 대한 ** 참고 문헌 **을 제공 할 수 있습니까? "8192는 네트워크를 통해 보내는 패키지의 최대 크기입니다"? –

관련 문제