Bien que Java fournit une classe d'opération IO qui peut traiter les fichiers, il n'y a pas de méthode de copie de fichiers. Les fichiers de copie sont une opération importante. Cependant, plusieurs méthodes peuvent être reproduites par le fichier Java, et les méthodes les plus populaires en 4 sont répertoriées ci-dessous.
1. Copier avec FileStreams
Il s'agit de la façon la plus classique de copier le contenu d'un fichier dans un autre fichier. Lisez les octets du fichier A utilisant FileInputStream et écrivez-le dans le fichier B avec fileoutputStream. Ceci est le code de la première méthode:
Private Static Void CopyFileSingFileStams (File Source, File dest) lance IoException {InputStream Input = Null; [1024];Comme vous voyez quelques données sur les opérations de lecture et d'écriture, cela devrait être une faible efficacité.
2. Utilisez FileChannel pour copier
Java Nio comprend la méthode TransferFrom, qui doit être plus rapide que la copie de flux de fichiers selon le document. Ceci est le code de la deuxième méthode:
Private Static Void CopyFileUsingFileChannels (File Source, File dest) lance ioException {FileChannel InputChannel = NULL; , 0, inputchannel.size ());} enfin {inputchannel.close ();3. Utilisez des communes IO pour copier
Apache Commons IO fournit une méthode de fichier de copie dans sa classe FileUtils, qui peut être utilisée pour copier un fichier dans un autre endroit. Il est très pratique pour vous d'utiliser votre projet lors de l'utilisation de la classe FileUtils Apache Commons. Fondamentalement, cette classe utilise Java Nio FileChannel. Ceci est le code de la troisième méthode:
Private Static void copyfileUsingApacheComonsio (Source de fichier, fichier dest) lève ioException {fileUtils.copyfile (source, dest);}4. Copiez avec la classe de fichiers de Java7
Si vous avez une certaine expérience dans Java 7, vous savez peut-être que vous pouvez utiliser la méthode de copie des fichiers de fichiers pour copier d'un fichier vers un autre fichier. Ceci est le code de la quatrième méthode:
Private static void copyfileUsingJava7Files (fichier source, fichier dest) lève ioException {files.copy (source.topath (), dest.topath ());}5. Test
Voir maintenant lequel de ces méthodes est plus efficace, nous copierons un grand fichier pour utiliser chaque programme simple. De Cache pour éviter toute performance, nous utiliserons évidemment quatre fichiers source différents et quatre fichiers cibles différents. Jetons un coup d'œil au code:
Importation java.io. .nio.file.files; /nikos7//desktop/files/sourcefile1.txt "); file dest = new File (" c: //users/nikos7//desktop/files/destfile1.txt ") Copier le fichier à l'aide de filestreams long start = System.Nanotime ( ); = Nouveau fichier ("c: //users/nikos7//desktop/files//sourcefile2.txt"); Source, dest); end = System.NanoTime (); //Users//nikos7//desktop//sourcefile3.txt "); dest = new File (" c: //users//nikos7//desktop/files/destfile3.txt "); start = System.Nanotime () ; / / Files / /sourcefile4.txt "); dest = new file (" c: //users/nikos7//desktop/files/destfile4.txt "); start = system.nanotime (); sio (source, destry) ; end = System.NanoTiMe (); Null; Try {Input = new FileInputStream (Source); écriture (buf, 0, bytesRead);}} enfin {input.close (); Null; try {inputchannel = new FileInputStream (source) .getChannel (); {inputchannel.close (); , Fichier dest) lève ioException {fileUtils.copyfile (source, dest);}}}Sortir:
Temps pris par FileStreams Copy = 127572360 TEMPS PRIS par FileChannels Copy = 10449963 TEMPS PRÉSENT par Java7 Files Copy = 1080833333333333333333333333333333333333333333 par apache Commons Io Copy = 1797167777777
Tout comme vous pouvez le voir, FileChannels copier des fichiers volumineux est le meilleur moyen. Si vous gérez des fichiers plus grands, vous remarquerez une plus grande différence de vitesse. Ceci est un exemple.
Ce qui précède est tout le contenu de cet article.