Embora o Java forneça uma classe de operação de IO que possa lidar com arquivos. Mas não há como copiar arquivos. Copiar arquivos é uma operação importante quando o seu programa precisa lidar com muitos arquivos relacionados. No entanto, existem várias maneiras de copiar arquivos Java e a seguir são os métodos mais populares.
1. Copiar usando o FileStreams
Esta é a maneira mais clássica de copiar o conteúdo de um arquivo em outro. Use FileInputStream para ler bytes do arquivo A e use o FileOutputStream para gravar no arquivo B. Este é o código do primeiro método:
private static void copyFileUsingFilEstreams (fonte de arquivo, arquivo de arquivo) lança ioexception {inputStream input = null; OutputStream Output = NULL; tente {input = new FileInputStream (origem); output = new FileOutputStream (dest); byte [] buf = novo byte [1024]; int bytesread; while ((bytesread = input.read (buf))> 0) {output.Write (buf, 0, bytesread); }} finalmente {input.close (); output.Close (); }} Como você pode ver, realizamos várias operações de leitura e gravação para experimentar os dados, portanto, essa deve ser uma maneira ineficiente e, no próximo método, veremos uma nova maneira.
2. Copie usando o FileChannel
O Java Nio inclui o método TransferFrom, que deve ser copiado mais rápido que os fluxos de arquivo com base no documento. Aqui está o código para o segundo método:
private estático void copyfileUsingFileChannels (fonte de arquivo, destin a arquivo) lança ioexception {filechannel inputChannel = null; FileChannel OutputChannel = NULL; tente {inputChannel = new FileInputStream (fonte) .getChannel (); outputChannel = new FileOutputStream (dest) .getChannel (); outputChannel.TransferFrom (inputChannel, 0, inputChannel.size ()); } finalmente {inputChannel.close (); outputChannel.close (); }}3. Copie usando o Commons io
O Apache Commons IO fornece um método de arquivo de cópia em sua classe FileUtils, que pode ser usada para copiar um arquivo para outro. É muito conveniente ao usar a classe Apache Commons FileUtils quando você já está usando seu projeto. Basicamente, esta classe usa internos do Java Nio FileChannel. Este é o código para o terceiro método:
private static void copyfileUsingapacheCommonsio (fonte de arquivo, arquivo de arquivo) lança ioexception {fileutils.copyfile (origem, dest); }4. Copie usando a classe de arquivos do Java7
Se você tiver alguma experiência no Java 7, poderá saber que pode usar o método de cópia para copiar de um arquivo para outro. Este é o código para o quarto método:
private estático void copyFileUSingJava7Files (fonte de arquivo, arquivo de arquivo) lança ioexception {files.copy (fonte.topath (), dest.topath ()); }Vamos dar uma olhada no código de implementação para copiar um arquivo Java para outro diretório. O código específico é o seguinte:
pacote com.util; importar java.io.file; importar java.io.fileInputStream; importar java.io.fileOutputStream; importar java.io.inputStream; public class Testhtml {/** * cópia de um único arquivo * @param string string de string original Path como: c: c: /fqf.txt ** ** * @return boolean */ public void copyFile (string OldPath, string newPath) {try {int bytesum = 0; int byteread = 0; Arquivo OldFile = novo arquivo (OldPath); if (OldFile.Exists ()) {// inputStream Instream = new FileInputStream (OldPath); // leia no arquivo fileOutputStream original FS = new FileOutputStream (newPath); byte [] buffer = novo byte [1444]; comprimento int; while ((byteread = Instream.read (buffer))! = -1) {bytesum += byteread; // bytes size de tamanho de arquivo system.out.println (bytesum); fs.write (buffer, 0, byteread); } unstruam.close (); }} catch (Exceção e) {System.out.println ("Erro copiando um único arquivo"); E.PrintStackTrace ();}}/** * Copie o conteúdo inteiro da pasta * @param OldPath String Caminho do arquivo original como: c:/fqf * @param newPath String Path após a cópia é: f:/fqf/ff * @return boolean */public void cópia (string antigo, stringPath) {Tryn {Try // Se a pasta não existir, crie um novo arquivo de pasta a = novo arquivo (antigo); String [] arquivo = A.List (); Arquivo temp = nulo; for (int i = 0; i <arquivo.length; i ++) {if (OldPath.endswith (file.separator)) {temp = new File (OldPath+File [i]); } else {temp = new File (OldPath+file.separator+arquivo [i]); } if (temp.isfile ()) {fileInputStream input = new FileInputStream (temp); FileOutputStream output = new FileOutputStream (newPath + "/" + (temp.getName ()). Tostring ()); byte [] b = novo 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 ()) {// se for uma cópia da subpasta (arquivo antigo+"/"+[i], newPath+"/"+arquivo [i]); }}} catch (Exceção e) {System.out.println ("Erro copiando a operação inteira do conteúdo da pasta"); E.PrintStackTrace ();}} public static void main (string [] args) lança exceção {// // Este é o seu arquivo de origem, que existe // file antes do arquivo = novo ("c: /users/administrator/desktop/untit-2.html"); afterfile = new File("C:/Users/Administrator/Desktop/jiekou0/Untitled-2.html");//// // Define the file input stream to read the beforefile file// FileInputStream fis = new FileInputStream(beforefile);//// Define the file output stream to write information into the afterfile file// FileOutputStream fos = new FileOutputStream (Afterfile); //// // Area de cache do arquivo // byte [] b = novo byte [1024]; // // Leia as informações do fluxo de arquivos na área de cache do arquivo. Se o resultado da leitura não for -1, significa que o arquivo não foi lido e foi lido.// while (fis.read (b)! = -1) {// // escreva o conteúdo na área de cache no arquivo de arquivo após o arquivo // fos.write (b); // fos.flush (); //} string string OldPath = "c: /users/administrator/desktop/untitled-2.html"; string newpath = "c: /users/administrator/desktop/jiekou0/untitled-2.html"; testhtmn t = novo testhtml ();Resumir
O exposto acima são as quatro maneiras de copiar arquivos no Java e o código de exemplo de copiar arquivos para outro diretório introduzido pelo editor. Espero que seja útil para todos. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a todos a tempo. Muito obrigado pelo seu apoio ao site wulin.com!