2009-07-10 24 views
5

Nel mio codice Java ho una funzione che ottiene il file dal client nella richiesta http e lo converte nel file. Ho questa linea:8192 byte durante la creazione del file

byte[] buffer = new byte[8192]; 

cosa significa qui 8192 byte (8 kb)?

This is one of the responses that I got e voglio essere sicuro di aver capito quel codice.

+1

Significa che stai creando un buffer per contenere approssimativamente 8,2 kb di dati ... –

+0

Modifica la tua domanda per fare riferimento all'origine del codice all'indirizzo http://stackoverflow.com/questions/1111130/basic-file- upload-in-gwt/1111606 # 1111606 –

+3

@Ed Swangren: 8.2? Dove lo hai preso? Sembra esattamente 8.0 kb. 1024 * 8. – Beska

risposta

10

Che utilizza un buffer per leggere e scrivere blocchi da 8kB contemporaneamente. Il numero è abbastanza arbitrario, ma per ragioni di prestazioni ha senso utilizzare un multiplo di 512 byte quando si scrive un file e preferibilmente un multiplo della dimensione del cluster dei dischi. 8kB è una dimensione del buffer ragionevole per la maggior parte degli scopi.

+0

Perché un multiplo di 512? – Pacerier

1

Se dovessi indovinare, è la quantità di spazio che stai usando per leggere nel file. Senza il resto del codice non posso dire se sta cercando di leggerlo tutto e inserirlo in 8k o se sta leggendo, 8k alla volta, e poi scaricarlo nel file.

+0

Controlla questa risposta: http://stackoverflow.com/questions/1111130/basic-file-upload-in-gwt/1111606#1111606 Questo è dove ho quel numero – Maksim

+4

Quindi sta leggendo in 8k alla volta e inviandolo al file prima di afferrare il prossimo pezzo da 8k. La giustificazione è che 8k è un compromesso ragionevole tra la rotazione delle ruote che chiama le funzioni e lo spreco di spazio quando si arriva alla fine del file, perché è ragionevolmente vicino alla dimensione del blocco su molti file system. –

+0

Come potremmo rispondere quando non ci mostrate alcun codice sorgente ad eccezione della dichiarazione/definizione dell'array? –

2

Questa è la dimensione della matrice di byte, il che significa che il buffer terrà 8192 byte alla volta.

2

8192 è la dimensione massima di un pacchetto che invia tramite rete. buffer char [8192];/* i singoli pacchetti non sono generalmente più grandi di 8192 byte */ 512 byte è troppo piccolo.

+2

Puoi fornire alcuni ** riferimenti ** su tale affermazione: "' 8192 è la dimensione massima di un pacchetto che invia tramite rete' "? –

Problemi correlati