MENÙ

Copia file Java (modifica dimensione buffer)

sommario

Copia file Java (modifica dimensione buffer)

A Giava java.io.InputStream,,java.io.OutputStream A
Presentazione di un programma di esempio che esegue l'elaborazione della copia utilizzando flussi di input/output.
Nell'elaborazione della copia utilizzando i flussi, anche i file di grandi dimensioni possono essere copiati in tempi relativamente brevi aumentando la dimensione del buffer di lettura.
Nel programma di esempio, la dimensione del buffer di lettura dei dati può essere specificata con un argomento.

L'area del buffer di lettura specificata è protetta all'interno dell'heap JavaVM, quindi renderla troppo grande comporterà una scarsa efficienza. Pertanto, controlliamo anche l'efficiente dimensione del buffer di lettura dei dati durante la copia dei file.

programma di esempio


esecuzione

Per copiare il file di programma di esempio, abbiamo preparato un file da 100 MB "100M.txt" direttamente sotto l'unità C. Nel programma di esempio, C:\100M.txt , legge i dati in unità con dimensioni del buffer pari a 1000 KB. C:\a.txt Copia a.

L'esempio è stato eseguito nel seguente ambiente.
Sistema operativo: Windows XP
Processore: Athlon 1,46GHz
Memoria: 1 GB
JRE: 1.6.4

◆Esempio di esecuzione

/** * Esempio di esecuzione * @param args */ public static void main(String[] args) { try { copyStream("C:\\100M.txt", "C:\\a.txt",1000); } catch (IOException e) { e.printStackTrace(); } }

◆Risultati dell'esecuzione


Modifica della dimensione del buffer

Per verificare l'efficiente dimensione del buffer di lettura dei dati durante la copia dei file, impostare il terzo argomento di copyStream su
Di seguito sono riepilogati i risultati di un'elaborazione di copia simile in unità da 1 KB, 100 KB, 1000 KB e 10000 KB.



Sebbene non si possa concludere solo dai risultati precedenti, se si specifica la dimensione del buffer di lettura dei dati in unità di 1000 KB,
I risultati hanno mostrato che era efficiente in termini di utilizzo dell'heap e tempo di elaborazione durante l'elaborazione della copia.
Risultati simili sono stati ottenuti anche aumentando la dimensione del file (circa 1 GB).

D'altra parte, quando si copia un file di piccole dimensioni (circa 1 MB o meno), aumentare la dimensione del buffer sarà uno spreco, quindi penso che sia meglio specificare circa 100 KB.

Utilizza FileChannel per velocità più elevate


 java.io.InputStream,,java.io.OutputStream
L'elaborazione della copia è importante per comprendere i flussi di input/output, ma
Nuovo I/O introdotto in J2SE1.4 java.nio.channels.FileChannel#transferTo
Utilizzando questo metodo, puoi copiare i file in modo ancora più efficiente.
Successivamente, ti mostrerò come copiare facilmente e rapidamente i file utilizzando FileChannel.
Copia file Java (facile e veloce)

  • URLをコピーしました!
sommario