Вопрос по java, bytearray – 8192 байта при создании файла

7

В моем коде Java есть функция, которая получает файл от клиента в запросе http и преобразует его в файл. У меня есть эта строка там:

byte[] buffer = new byte[8192];

что значит 8192 байта (8 кб)?

Это один из ответов, которые я получили хочу убедиться, что я понимаю этот код.

Это означает, что вы создаете буфер для хранения примерно 8,2 КБ данных ... Ed S.
Дер, извини, твое право. Я не делаю жесткие диски здесь :), деление на 10 неправильно. Я просто говорил, что смысл кода сам по себе очень очевиден. Ed S.
Если вы создаете жесткие диски, не должно ли это быть 12 КБ? Tom Hawtin - tackline
Пожалуйста, измените ваш вопрос, чтобы ссылаться на источник кода наstackoverflow.com/questions/1111130/basic-file-upload-in-gwt/… Jeremy Stein
@ Эд Свангрен: 8,2? Где ты это взял? Похоже, 8.0 кб точно. 1024 * 8. Beska

Ваш Ответ

4   ответа
2

означающий, что в вашем буфере одновременно будет храниться 8192 байта.

1

8192 - максимальный размер посылки, отправляемой по сети. / * отдельные пакеты обычно не превышают 8192 байта * / 512 байт слишком мало.

Можете ли вы предоставить некоторыеreferences об этой претензии: & quot;8192 is maximum size of a package sending via network& Quot ;?
Этот комментарий, похоже, был скопирован сA brief programming tutorial in C for raw socketsи неверно истолкован как «максимальный размер пакета [sic]»;which it is not.
1

это количество места, которое вы используете для чтения в файле. Без остальной части кода я не могу сказать, пытается ли он прочитать все это и втиснуть его в 8k или если он читает в 8k за раз, а затем выгрузить его в файл.

Проверьте этот ответ:stackoverflow.com/questions/1111130/basic-file-upload-in-gwt/… Здесь у меня есть этот номер Maksim
Затем он читает по 8 Кб за раз и отправляет это в файл перед тем, как захватить следующий фрагмент 8 Кб. Оправдание состоит в том, что 8k - разумный компромисс между вращением ваших колес, вызывающих функции, и потерей места, когда вы добираетесь до конца файла, потому что во многих файловых системах он достаточно близок к размеру блока.
Как мы можем ответить на это, когда вы не показываете нам никакого исходного кода, кроме объявления / определения массива?
11

что он использует буфер для чтения и записи блоков 8 КБ одновременно. Это число довольно произвольно, но по соображениям производительности имеет смысл использовать кратное 512 байт при записи файла и предпочтительно кратное размеру кластера дисков. 8 КБ - это разумный размер буфера для большинства целей.

Почему кратно 512?

Похожие вопросы