2009-07-10 15 views
5

En mi código Java tengo una función que obtiene el archivo del cliente en la solicitud http y lo convierte en el archivo. Tengo esta línea allí:8192 bytes al crear el archivo

byte[] buffer = new byte[8192]; 

¿Qué significa 8192 bytes (8 kb) aquí?

This is one of the responses that I got, y quiero asegurarme de que entiendo ese código.

+1

Significa que está creando un búfer para almacenar aproximadamente 8,2 kb de datos ... –

+0

Edite su pregunta para hacer referencia al origen del código en http://stackoverflow.com/questions/1111130/basic-file- upload-in-gwt/1111606 # 1111606 –

+3

@Ed Swangren: 8.2? ¿De dónde sacaste eso? Parece exactamente 8.0 kb. 1024 * 8. – Beska

Respuesta

10

Que utiliza un búfer para leer y escribir bloques de 8kB a la vez. El número es bastante arbitrario, pero, por razones de rendimiento, tiene sentido utilizar un múltiplo de 512 bytes al escribir un archivo, y preferiblemente un múltiplo del tamaño del clúster de los discos. 8kB es un tamaño de búfer razonable para la mayoría de los propósitos.

+0

¿Por qué un múltiplo de 512? – Pacerier

1

Si tuviera que adivinar, esa es la cantidad de espacio que está usando para leer en el archivo. Sin el resto del código, no puedo decir si está tratando de leerlo todo y meterlo en 8k o si lo está leyendo, 8k a la vez, y luego volcarlo en el archivo.

+0

Marque esta respuesta: http://stackoverflow.com/questions/1111130/basic-file-upload-in-gwt/1111606#1111606 Aquí es donde tengo ese número – Maksim

+4

Luego está leyendo en 8k a la vez y enviarlo al archivo antes de tomar el siguiente fragmento de 8k. La justificación es que 8k es una compensación razonable entre girar las funciones de llamada de tus ruedas y perder espacio cuando llegas al final del archivo, porque se encuentra razonablemente cerca del tamaño del bloque en muchos sistemas de archivos. –

+0

¿Cómo podríamos responder eso cuando no nos muestra ningún código fuente a excepción de la declaración/definición de matriz? –

2

Este es el tamaño de la matriz de bytes, lo que significa que su búfer contendrá 8192 bytes a la vez.

2

8192 es el tamaño máximo de un paquete que se envía a través de la red. búfer de caracteres [8192];/* los paquetes individuales generalmente no son mayores que 8192 bytes */ 512 bytes es demasiado pequeño.

+2

¿Puede proporcionar ** referencias ** sobre esa afirmación: "' 8192 es el tamaño máximo de un paquete que se envía a través de la red' "? –

Cuestiones relacionadas