MENU

Copie de fichier Java (facile et rapide)

table des matières

Copie de fichier Java (facile et rapide)FileChannel#transferTo

En Javacopier un fichierPrésentation d'un exemple de programme pour ce faire.
L'exemple de programme est basé sur les nouvelles E/S introduites dans J2SE1.4. java.nio.channels.FileChannel#transferTo méthode.
Vous pouvez écrire un programme de traitement de copie sans vous soucier du tampon requis pour lire les données, ce qui en fait la méthode de codage la plus simple.

Qu'est-ce qu'une chaîne ?

Le mot canal est utilisé de différentes manières.
Fondamentalement, cela semble indiquer un chemin de transmission pour l'entrée et la sortie de données entre d'autres appareils.java.nio.channels.FileChannel est une classe qui représente une connexion pour lire et écrire dans des fichiers.

Transférer à Une méthode peut transférer des octets d'un fichier source vers un canal de destination.

Ce qui suit est extrait du document JavaAPI.

transferTo (position longue, nombre long, cible WritableByteChannel)
Transfère les octets du fichier de ce canal vers le canal d'octets inscriptible spécifié.
Cette méthode peut être bien plus efficace qu’une simple boucle qui lit les données de ce canal et les écrit sur le canal cible. De nombreux systèmes d'exploitation peuvent transférer des octets directement du cache du système de fichiers vers le canal cible. À l’heure actuelle, aucun octet n’est copié.

Ce résultat de vérification montre comment utiliser un flux normal,
Le processus de copie était plus rapide que les autres méthodes FileChannel (telles que l'utilisation de la méthode ByteBuffer#allocateDirect).


exemple de programme

exécution

Afin de copier l'exemple de fichier de programme, nous avons préparé un fichier de 100 Mo "100M.txt" directement sous le lecteur C.
Dans l'exemple de programme C:\100M.txt en copiant C:\a.txt Créez un fichier.

L’exemple a été exécuté dans l’environnement suivant.
Système d'exploitation : Windows XP
Processeur : Athlon 1,46 GHz
Mémoire : 1 Go
JRE : 1.6.4

◆Exemple d'exécution

/** * Exemple d'exécution * @param args */ public static void main(String[] args) { try { copyTransfer("C:\\100M.txt", "C:\\a.txt"); } catch (IOException e) { e.printStackTrace(); } }

◆Résultats d'exécution


 FileChannel#transferTo Dans le traitement de copie à l'aide de la méthode
La copie d'un fichier de 100 Mo s'est terminée en 3 secondes environ. En outre, l'utilisation du tas pendant le processus de copie était d'environ 300 (Ko).

D'ailleurs,Copie de fichier Java (modifier la taille du tampon)Dans la méthode présentée dans
Lorsque nous avons spécifié la taille de tampon la plus efficace de 1 000 Ko, le temps de traitement était d'environ 4 secondes et l'utilisation du tas était d'environ 1 300 Ko.

Même la copie de fichiers par flux peut être accélérée en ajustant la taille du tampon, donc
On peut dire qu'il n'y a pas beaucoup de différence dans le processus de copie d'un seul fichier.
Cependant, lors de la copie continue de fichiers volumineux ou de l'exécution de plusieurs processus de copie en parallèle, FileChannel peut être efficace en termes de vitesse de traitement et d'utilisation du tas.

  • URLをコピーしました!
table des matières