Aunque Java proporciona una clase de operación IO que puede manejar archivos. Pero no hay forma de copiar archivos. Copiar archivos es una operación importante cuando su programa tiene que lidiar con muchos archivos relacionados. Sin embargo, hay varias formas de copiar archivos Java, y los siguientes son los métodos más populares.
1. Copiar usando FileStreams
Esta es la forma más clásica de copiar el contenido de un archivo en otro. Use FileInputStream para leer bytes del archivo A y use FileOutputStream para escribir en el archivo B. Este es el código para el primer método:
Private static void copyFileUsingFilErtreams (fuente de archivo, archivo dest) lanza ioexception {inputStream input = null; OutputStream output = null; intente {input = new FileInputStream (fuente); salida = nuevo FileOutputStream (Dest); byte [] buf = nuevo byte [1024]; int bytesread; while ((bytesread = input.read (buf))> 0) {output.write (buf, 0, bytesread); }} finalmente {input.close (); output.close (); }} Como puede ver, realizamos varias operaciones de lectura y escritura para probar los datos, por lo que esta debería ser una forma ineficiente, y el siguiente método veremos una nueva forma.
2. Copiar usando fileChannel
Java NIO incluye el método TransferFrom, que debe copiarse más rápido que las transmisiones de archivos en función del documento. Aquí está el código para el segundo método:
Private static void copyFileUsingFileChannels (fuente de archivo, archivo Dest) lanza IOException {fileChannel inputChannel = null; FileChannel outputChannel = null; intente {inputChannel = new FileInputStream (fuente) .getChannel (); outputChannel = new FileOutputStream (Dest) .getChannel (); outputChannel.transferFrom (InputChannel, 0, inputChannel.size ()); } finalmente {inputChannel.close (); outputChannel.close (); }}3. Copie usando Commons io
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. Es muy conveniente cuando se usa la clase APACHE Commons FileUtils cuando ya está utilizando su proyecto. Básicamente, esta clase usa Java Nio Filechannel Internals. Este es el código para el tercer método:
Private static void copyFileUsingAPACHECOMSONSIO (FUENTE DE FILE, FILE DET) Lanza IOException {fileUtils.copyFile (fuente, des); }4. Copiar usando la clase de archivos de Java7
Si tiene alguna experiencia en Java 7, puede saber que puede usar el método de copia para copiar de un archivo a otro. Este es el código para el cuarto método:
Private static void copyFileUsingJava7Files (FUNDE FUENTE, File Dest) lanza IOException {files.copy (fuente.topath (), des.topath ()); }Echemos un vistazo al código de implementación para copiar un archivo Java a otro directorio. El código específico es el siguiente:
paquete com.util; import java.io.file; import java.io.fileInputStream; import java.io.fileOutputStream; import java.io.inputstream; public class testHtml {/*** Copiar un solo archivo* @param cadena de cadena ruta de archivo original como: c: /fqf.txt* @param newpath f: /fqf.txt * @return boolean */ public void copyfile (String OldPath, String NewPath) {try {int bytesum = 0; int byteread = 0; Archivo OldFile = nuevo archivo (OldPath); if (oldFile.Exists ()) {// InputStream InSteam = new FileInputStream (OldPath); // Leer en el archivo original FileOutputStream fs = new FileOutputStream (NewPath); byte [] buffer = new Byte [1444]; int longitud; while ((byteread = instramp.read (buffer))! = -1) {bytesum += byteread; // bytes de archivo de archivo system.out.println (bytesum); fs.write (buffer, 0, byteread); } IntileM.Close (); }} catch (Exception e) {System.out.println ("Error a copiar un solo archivo"); E.PrintStackTrace ();}}/** * Copie el contenido de la carpeta completo * @param OldPath String Ruta del archivo original como: c:/fqf * @param ruta de cadena newpath después de copiar es: f:/fqf/ff * @return */public void Copyfolder (String OldPath, String String) {Prueba {(New File (New File (newpath). // Si la carpeta no existe, cree un nuevo archivo de carpeta A = nuevo archivo (OldPath); Cadena [] file = A.List (); Archivo temp = null; for (int i = 0; i <file.length; i ++) {if (oldpath.endswith (file.separator)) {temp = new File (OldPath+File [i]); } else {Temp = nuevo archivo (OldPath+File.separator+File [i]); } if (temp.isfile ()) {fileInputStream input = new FileInputStream (TEMP); FileOutputStream output = new FileOutputStream (NewPath + "/" + (temp.getName ()). ToString ()); byte [] b = nuevo byte [1024 * 5]; int len; while ((len = input.read (b))! = -1) {output.write (b, 0, len); } output.flush (); output.close (); input.close (); } if (temp.isDirectory ()) {// Si es una subcarpeta copyfolder (OldPath+"/"+archivo [i], newpath+"/"+archivo [i]); }}} Catch (Exception e) {System.out.println ("Error a copiar toda la operación de contenido de la carpeta"); E.PrintStActAtRace ();}} public static void main (string [] args) lanza la excepción {// // Este es su archivo fuente, que existe // archivo antes que el archivo = nuevo archivo ("c: /users/administrator/desktop/untitled-2.html"); ////////////////////////////////////////////// /tó Afterfile = nuevo archivo ("c: /users/administrator/desktop/jiekou0/untitled-2.html"); ///// // Defina la transmisión de entrada de archivo para leer el archivo de archivo antes // fileinputstream fis = nuevo fileinputStream (antes de que elfile); /// Define la transmisión de la salida de archivo para escribir información en el archivo de archivo después del archivo // newinputStream (antes de la medida); ////// FileOutputStream (Afterfile); //// // Área de caché de archivos // byte [] b = new Byte [1024]; // // Lea la información de transmisión de archivo en el área de caché de archivo. Si el resultado de lectura no es -1, significa que el archivo no se ha leído, y se ha leído OldPath = "c: /users/administrator/desktop/untitled-2.html"; string newpath = "c: /users/administrator/desktop/jiekou0/untitled-2.html"; testhtml t = new testhtml (); t.copyfile (Oldpath, newpath);};Resumir
Lo anterior son las 4 formas de copiar archivos en Java y el código de ejemplo de copia de archivos a otro directorio introducido por el editor. Espero que sea útil para todos. Si tiene alguna pregunta, déjame un mensaje y el editor responderá a todos a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!