Aunque Java proporciona una clase de operación IO que puede procesar archivos, no existe un método para copiar archivos. Los archivos de copia son una operación importante. Sin embargo, hay varios métodos que pueden replicarse por el archivo Java, y los métodos más populares en 4 se enumeran a continuación.
1. Copia con FilErtreams
Esta es la forma más clásica de copiar el contenido de un archivo a otro archivo. Lea los bytes del archivo A usando FileInputStream y escríbelo en File B con FileOutputStream. Este es el código del primer método:
Private void copyFileUsingFilEntreMs (FUNCIONA DEL ARCHIVO, File Dest) Lanza IOException {InputStream Input = NULL; [1024];Al ver algunos datos de operaciones de lectura y escritura, esto debería ser una baja eficiencia.
2. Use fileChannel para copiar
Java NIO incluye el método TransferFrom, que debe ser más rápido que la copia del flujo de archivo de acuerdo con el documento. Este es el código del segundo método:
Private void CopyFileUsingFileChannels (Fuente de archivo, archivo Dest) Lanza IOException {FileChannel inputChannel = null; , 0, inputChannel.size ());3. Use Commons IO para copiar
Apache Commons IO proporciona un método de archivo de copia en su clase FileUtils, que se puede usar para copiar un archivo a otro lugar. Es muy conveniente que use su proyecto cuando use la clase Apache Commons FileUtils. Básicamente, esta clase usa Java Nio Filechannel. Este es el código del tercer método:
Private static void copyFileUsingAPACHECOMSONSIO (FUENTE FILE, File Dest) lanza IOException {fileUtils.copyFile (fuente, des);}4. Copie con la clase de archivos de Java7
Si tiene alguna experiencia en Java 7, puede saber que puede usar el método de copia de archivos de archivos para copiar de un archivo a otro archivo. Este es el código del cuarto método:
Private static void copyFileUsingJava7Files (File Foured, File Dest) lanza IOException {files.copy (fuente.topath (), dest.topath ());}5. Prueba
Ahora vea cuál de estos métodos es más eficiente, copiaremos un archivo grande para usar cada programa simple. Desde caché para evitar cualquier rendimiento, obviamente usaremos cuatro archivos de origen diferentes y cuatro archivos de destino diferentes. Echemos un vistazo al código:
Importar java.io.file; .nio.file.files; /nikos7//desktop/files/sourcefile1.txt "); archivo dest = nuevo archivo (" c: //users/nikos7//desktop/files/destfile1.txt ") Copiar archivo usando FileStreams Long Start = System.nanotime ( ); = Nuevo archivo ("c: //users/nikos7//desktop/files//sourcefile2.txt"); Fuente, Dest); //Users//nikos7//desktop//sourcefile3.txt "); dest = nuevo archivo (" 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 (fuente, destry) ; NULL; escribir (buf, 0, bytesread);}} Finalmente {input.close (); Nulo; {InputChannel.Close (); outputChannel.Close ();}} private void void copyFileUsingJava7Files (archivo Dest) lanza IOEXCEPION Files.Copy (Source.Topath (), dest.Topath ());} privado CopyfileusingapacheComonsio , Archivo dest) lanza ioexception {fileUtils.copyFile (fuente, des);}}}Producción:
Tiempo tomado por FileStreams Copy = 127572360 Tiempo tomado por fileChannels Copy = 104499963 Tiempo tomado por Java7 Archivos Copy = 108083333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333331
Así como puede ver que los archivos grandes de Filechannels son la mejor manera. Si maneja archivos más grandes, notará una mayor diferencia de velocidad. Este es un ejemplo.
Lo anterior es todo el contenido de este artículo.