2009-07-10 2 views
5

В моем коде Java у меня есть функция, которая получает файл от клиента в HTTP-запросе и преобразует его в файл. У меня есть эта строка: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.0 kb точно. 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 является разумным компромиссом между прямыми функциями вызова колес и потерей пространства, когда вы добираетесь до конца файла, потому что и это достаточно близко к размеру блока во многих файловых системах. –

+0

Как мы можем ответить на этот вопрос, если вы не указали нам исходный код, кроме объявления/определения массива? –

2

Это размер массива байтов, что означает, что ваш буфер будет содержать 8192 байта за раз.

2

8192 максимальный размер отправки пакета по сети. буфер символов [8192];/* одиночные пакеты обычно не больше 8192 байта */ 512 байт слишком мало.

+2

Можете ли вы предоставить некоторые ** ссылки ** об этом утверждении: «' 8192 - максимальный размер отправки пакета по сети »? –