MENÙ

Copia file Java (facile e veloce)

sommario

Copia file Java (facile e veloce)FileChannel#trasferimento a

A Giavacopia il filePresentazione di un programma di esempio per eseguire questa operazione.
Il programma di esempio è basato sul nuovo I/O introdotto in J2SE1.4. java.nio.channels.FileChannel#transferTo metodo.
È possibile scrivere un programma di elaborazione delle copie senza preoccuparsi del buffer necessario per leggere i dati, rendendolo il metodo di codifica più semplice.

Cos'è un canale?

La parola canale viene utilizzata in molti modi diversi.
Fondamentalmente sembra indicare un percorso di trasmissione per l'immissione e l'emissione di dati tra altri dispositivi.java.nio.channels.FileChannel è una classe che rappresenta una connessione per leggere e scrivere su file.

trasferire a Un metodo può trasferire byte da un file di origine a un canale di destinazione.

Quanto segue è citato dal documento JavaAPI.

transferTo(posizione lunga, conteggio lungo, destinazione WritableByteChannel)
Trasferisce byte dal file di questo canale al canale di byte scrivibili specificato.
Questo metodo può essere molto più efficiente di un semplice ciclo che legge i dati da questo canale e li scrive sul canale di destinazione. Molti sistemi operativi possono trasferire byte direttamente dalla cache del file system al canale di destinazione. Al momento non viene copiato nessun byte.

Questo risultato della verifica mostra come utilizzare un flusso normale,
Il processo di copia è stato più veloce rispetto ad altri metodi FileChannel (come l'utilizzo del metodo ByteBuffer#allocateDirect).


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 copiando C:\a.txt Crea un file.

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 { copyTransfer("C:\\100M.txt", "C:\\a.txt"); } catch (IOException e) { e.printStackTrace(); } }

◆Risultati dell'esecuzione


 FileChannel#trasferimento a Nell'elaborazione della copia utilizzando il metodo
La copia di un file da 100 MB è stata completata in circa 3 secondi. Inoltre, l'utilizzo dell'heap durante il processo di copia è stato di circa 300 (KB).

A proposito,Copia file Java (modifica dimensione buffer)Nel metodo introdotto in
Quando abbiamo specificato la dimensione del buffer più efficiente di 1.000 KB, il tempo di elaborazione è stato di circa 4 secondi e l'utilizzo dell'heap è stato di circa 1.300 KB.

Anche la copia dei file tramite stream può essere accelerata regolando la dimensione del buffer, quindi
Si può dire che non c'è molta differenza nel processo di copia di un singolo file.
Tuttavia, quando si copiano file di grandi dimensioni in modo continuo o si eseguono più processi di copia in parallelo, FileChannel può essere efficace in termini di velocità di elaborazione e utilizzo dell'heap.

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