Java Copy Directory copyDirectoryWithContents(final File srcPath, final File dstPath)

Here you can find the source of copyDirectoryWithContents(final File srcPath, final File dstPath)

Description

This methods copies a directory with all its files.

License

Open Source License

Parameter

Parameter Description
srcPath a parameter
dstPath a parameter

Exception

Parameter Description
IOException an exception

Declaration

public static void copyDirectoryWithContents(final File srcPath, final File dstPath) throws IOException 

Method Source Code

//package com.java2s;
/********************************************************************************* 
* Ephesoft is a Intelligent Document Capture and Mailroom Automation program 
* developed by Ephesoft, Inc. Copyright (C) 2015 Ephesoft Inc. 
* 
* This program is free software; you can redistribute it and/or modify it under 
* the terms of the GNU Affero General Public License version 3 as published by the 
* Free Software Foundation with the addition of the following permission added 
* to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK 
* IN WHICH THE COPYRIGHT IS OWNED BY EPHESOFT, EPHESOFT DISCLAIMS THE WARRANTY 
* OF NON INFRINGEMENT OF THIRD PARTY RIGHTS. 
* 
* This program 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 Affero General Public License for more 
* details. //from  w ww  . jav a  2  s  . c om
* 
* You should have received a copy of the GNU Affero General Public License along with 
* this program; if not, see http://www.gnu.org/licenses or write to the Free 
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 
* 02110-1301 USA. 
* 
* You can contact Ephesoft, Inc. headquarters at 111 Academy Way, 
* Irvine, CA 92617, USA. or at email address info@ephesoft.com. 
* 
* The interactive user interfaces in modified source and object code versions 
* of this program must display Appropriate Legal Notices, as required under 
* Section 5 of the GNU Affero General Public License version 3. 
* 
* In accordance with Section 7(b) of the GNU Affero General Public License version 3, 
* these Appropriate Legal Notices must retain the display of the "Ephesoft" logo. 
* If the display of the logo is not reasonably feasible for 
* technical reasons, the Appropriate Legal Notices must display the words 
* "Powered by Ephesoft". 
********************************************************************************/

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.Arrays;

public class Main {
    /**
     * This methods copies a directory with all its files.
     * 
     * @param srcPath
     * @param dstPath
     * @throws IOException
     */
    public static void copyDirectoryWithContents(final File srcPath, final File dstPath) throws IOException {

        if (srcPath.isDirectory()) {
            if (!dstPath.exists()) {
                dstPath.mkdir();
            }

            final String[] files = srcPath.list();
            if (files.length > 0) {
                Arrays.sort(files);

                for (int index = 0; index < files.length; index++) {
                    copyDirectoryWithContents(new File(srcPath, files[index]), new File(dstPath, files[index]));
                }
            }

        } else {
            if (srcPath.exists()) {
                final InputStream input = new FileInputStream(srcPath);
                final OutputStream out = new FileOutputStream(dstPath);
                // Transfer bytes from in to out
                final byte[] buf = new byte[1024];
                int len = input.read(buf);
                while (len > 0) {
                    out.write(buf, 0, len);
                    len = input.read(buf);
                }
                if (input != null) {
                    input.close();
                }
                if (out != null) {
                    out.close();
                }
            }
        }

    }

    /**
     * This methods copies a directory with all its files.
     * 
     * @param srcPath
     * @param dstPath
     * @throws IOException
     */
    public static void copyDirectoryWithContents(final String sSrcPath, final String sDstPath) throws IOException {
        final File srcPath = new File(sSrcPath);
        final File dstPath = new File(sDstPath);

        if (srcPath.isDirectory()) {
            if (!dstPath.exists()) {
                dstPath.mkdir();
            }

            final String[] files = srcPath.list();
            if (files.length > 0) {
                // Arrays.sort(files);

                for (int index = 0; index < files.length; index++) {

                    copyDirectoryWithContents(new File(srcPath, files[index]), new File(dstPath, files[index]));
                }
            }

        } else {
            if (srcPath.exists()) {
                final InputStream input = new FileInputStream(srcPath);
                final OutputStream out = new FileOutputStream(dstPath);
                // Transfer bytes from in to out
                final byte[] buf = new byte[1024];
                int len = input.read(buf);
                while (len > 0) {
                    out.write(buf, 0, len);
                    len = input.read(buf);
                }
                if (input != null) {
                    input.close();
                }
                if (out != null) {
                    out.close();
                }
            }
        }

    }
}

Related

  1. copyDirectoryContents(File source, File destination)
  2. copyDirectoryContents(File src, File target)
  3. copyDirectoryContents(File srcDir, File dstDir)
  4. copyDirectoryFromJar(String jarName, String srcDir, File tmpDir)
  5. copyDirectoryTree(File copyFrom, File copyTo)