Here you can find the source of copyFile(File sourceFile, File targetFile)
public static void copyFile(File sourceFile, File targetFile) throws IOException
//package com.java2s; /*//from www .j av a 2s . c o m * JBoss, Home of Professional Open Source. * Copyright 2015, Red Hat, Inc., and individual contributors * as indicated by the @author tags. See the copyright.txt file in the * distribution for a full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ import java.io.Closeable; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.zip.ZipFile; public class Main { private static final int DEFAULT_BUFFER_SIZE = 65536; public static void copyFile(File sourceFile, File targetFile) throws IOException { if (sourceFile.isDirectory()) { copyDir(sourceFile, targetFile); } else { File parent = targetFile.getParentFile(); if (!parent.exists()) { if (!parent.mkdirs()) { throw new IOException("Failed to create directory " + parent.getAbsolutePath()); } } final InputStream is = new FileInputStream(sourceFile); final OutputStream os = new FileOutputStream(targetFile); copyStreamAndClose(is, os); } } private static void copyDir(File sourceDir, File targetDir) throws IOException { if (targetDir.exists()) { if (!targetDir.isDirectory()) { throw new IllegalArgumentException("The target is not a directory: " + targetDir.getAbsolutePath()); } } else if (!targetDir.mkdirs()) { throw new IOException("Failed to create target directory " + targetDir.getAbsolutePath()); } File[] children = sourceDir.listFiles(); if (children != null) { for (File child : children) { copyFile(child, new File(targetDir, child.getName())); } } } /** * Copy input stream to output stream and close them both * * @param is input stream * @param os output stream * * @throws IOException for any error */ public static void copyStreamAndClose(InputStream is, OutputStream os) throws IOException { try { copyStream(is, os, DEFAULT_BUFFER_SIZE); // throw an exception if the close fails since some data might be lost is.close(); os.close(); } finally { // ...but still guarantee that they're both closed safeClose(is); safeClose(os); } } /** * Copy input stream to output stream without closing streams. Flushes output stream when done. * * @param is input stream * @param os output stream * * @throws IOException for any error */ public static void copyStream(InputStream is, OutputStream os) throws IOException { copyStream(is, os, DEFAULT_BUFFER_SIZE); } /** * Copy input stream to output stream without closing streams. Flushes output stream when done. * * @param is input stream * @param os output stream * @param bufferSize the buffer size to use * * @throws IOException for any error */ private static void copyStream(InputStream is, OutputStream os, int bufferSize) throws IOException { if (is == null) { throw new IllegalArgumentException("Input stream is null"); } if (os == null) { throw new IllegalArgumentException("Output stream is null"); } byte[] buff = new byte[bufferSize]; int rc; while ((rc = is.read(buff)) != -1) os.write(buff, 0, rc); os.flush(); } public static void safeClose(final Closeable closeable) { if (closeable != null) { try { closeable.close(); } catch (IOException e) { // } } } public static void safeClose(final ZipFile closeable) { if (closeable != null) { try { closeable.close(); } catch (IOException e) { // } } } }