classes/phing/util/FileUtils.php
public function copyFile(
        PhingFile $sourceFile,
        PhingFile $destFile,
        Project $project,
        $overwrite = false,
        $preserveLastModified = true,
        &$filterChains = null,
        $mode = 0755,
        $preservePermissions = true
    ) {
        if ($overwrite || !$destFile->exists() || $destFile->lastModified() < $sourceFile->lastModified()) {
            if ($destFile->exists() && ($destFile->isFile() || $destFile->isLink())) {
                $destFile->delete();
            }

            // ensure that parent dir of dest file exists!
            $parent = $destFile->getParentFile();
            if ($parent !== null && !$parent->exists()) {
                // Setting source directory permissions to target
                // (On permissions preservation, the target directory permissions
                // will be inherited from the source directory, otherwise the 'mode'
                // will be used)
                $dirMode = ($preservePermissions ? $sourceFile->getParentFile()->getMode() : $mode);

                $parent->mkdirs($dirMode);
            }

            if ((is_array($filterChains)) && (!empty($filterChains))) {
                $in = self::getChainedReader(new BufferedReader(new FileReader($sourceFile)), $filterChains, $project);
                $out = new BufferedWriter(new FileWriter($destFile));

                // New read() methods returns a big buffer.
                while (-1 !== ($buffer = $in->read())) { // -1 indicates EOF
                    $out->write($buffer);
                }

                if ($in !== null) {
                    $in->close();
                }
                if ($out !== null) {
                    $out->close();
                }

                // Set/Copy the permissions on the target
                if ($preservePermissions === true) {
                    $destFile->setMode($sourceFile->getMode());
                }
            } else {
                // simple copy (no filtering)
                $sourceFile->copyTo($destFile);

                // By default, PHP::Copy also copies the file permissions. Therefore,
                // re-setting the mode with the "user file-creation mask" information.
                if ($preservePermissions === false) {
                    $destFile->setMode(FileUtils::getDefaultFileCreationMask(false));
                }
            }

            if ($preserveLastModified && !$destFile->isLink()) {
                $destFile->setLastModified($sourceFile->lastModified());
            }
        }
    }
public function copyFile(
        PhingFile $sourceFile,
        PhingFile $destFile,
        Project $project,
        $overwrite = false,
        $preserveLastModified = true,
        &$filterChains = null,
        $mode = 0755,
        $preservePermissions = true
    ) {
        if ($overwrite || !$destFile->exists() || $destFile->lastModified() < $sourceFile->lastModified()) {
            if ($destFile->exists() && ($destFile->isFile() || $destFile->isLink())) {
                $destFile->delete();
            }

            // ensure that parent dir of dest file exists!
            $parent = $destFile->getParentFile();
            if ($parent !== null && !$parent->exists()) {
                // Setting source directory permissions to target
                // (On permissions preservation, the target directory permissions
                // will be inherited from the source directory, otherwise the 'mode'
                // will be used)
                $dirMode = ($preservePermissions ? $sourceFile->getParentFile()->getMode() : $mode);

                $parent->mkdirs($dirMode);
            }

            if ((is_array($filterChains)) && (!empty($filterChains))) {
                $in = self::getChainedReader(new BufferedReader(new FileReader($sourceFile)), $filterChains, $project);
                $out = new BufferedWriter(new FileWriter($destFile));

                // New read() methods returns a big buffer.
                while (-1 !== ($buffer = $in->read())) { // -1 indicates EOF
                    $out->write($buffer);
                }

                if ($in !== null) {
                    $in->close();
                }
                if ($out !== null) {
                    $out->close();
                }

                // Set/Copy the permissions on the target
                if ($preservePermissions === true) {
                    $destFile->setMode($sourceFile->getMode());
                }
            } else {
                // simple copy (no filtering)
                $sourceFile->copyTo($destFile);

                // By default, PHP::Copy also copies the file permissions. Therefore,
                // re-setting the mode with the "user file-creation mask" information.
                if ($preservePermissions === false) {
                    $destFile->setMode(FileUtils::getDefaultFileCreationMask(false));
                }
            }

            if ($preserveLastModified && !$destFile->isLink()) {
                $destFile->setLastModified($sourceFile->lastModified());
            }
        }
    }
public function copyFile ( PhingFile $ sourceFile , PhingFile $ destFile , Project $ project , $ overwrite = false , $ preserveLastModified = true , & $ filterChains = null , $ mode = 0755 , $ preservePermissions = true ) { if ( $ overwrite || ! $ destFile -> exists ( ) || $ destFile -> lastModified ( ) < $ sourceFile -> lastModified ( ) ) { if ( $ destFile -> exists ( ) && ( $ destFile -> isFile ( ) || $ destFile -> isLink ( ) ) ) { $ destFile -> delete ( ) ; } // ensure that parent dir of dest file exists! $ parent = $ destFile -> getParentFile ( ) ; if ( $ parent !== null && ! $ parent -> exists ( ) ) { // Setting source directory permissions to target // (On permissions preservation, the target directory permissions // will be inherited from the source directory, otherwise the 'mode' // will be used) $ dirMode = ( $ preservePermissions ? $ sourceFile -> getParentFile ( ) -> getMode ( ) : $ mode ) ; $ parent -> mkdirs ( $ dirMode ) ; } if ( ( is_array ( $ filterChains ) ) && ( ! empty ( $ filterChains ) ) ) { $ in = self :: getChainedReader ( new BufferedReader ( new FileReader ( $ sourceFile ) ) , $ filterChains , $ project ) ; $ out = new BufferedWriter ( new FileWriter ( $ destFile ) ) ; // New read() methods returns a big buffer. while ( - 1 !== ( $ buffer = $ in -> read ( ) ) ) { // -1 indicates EOF $ out -> write ( $ buffer ) ; } if ( $ in !== null ) { $ in -> close ( ) ; } if ( $ out !== null ) { $ out -> close ( ) ; } // Set/Copy the permissions on the target if ( $ preservePermissions === true ) { $ destFile -> setMode ( $ sourceFile -> getMode ( ) ) ; } } else { // simple copy (no filtering) $ sourceFile -> copyTo ( $ destFile ) ; // By default, PHP::Copy also copies the file permissions. Therefore, // re-setting the mode with the "user file-creation mask" information. if ( $ preservePermissions === false ) { $ destFile -> setMode ( FileUtils :: getDefaultFileCreationMask ( false ) ) ; } } if ( $ preserveLastModified && ! $ destFile -> isLink ( ) ) { $ destFile -> setLastModified ( $ sourceFile -> lastModified ( ) ) ; } } }
Copies a file using filter chains.

@param  PhingFile $sourceFile
@param  PhingFile $destFile
@param  boolean $overwrite
@param  boolean $preserveLastModified
@param  array $filterChains
@param  Project $project
@param  integer $mode
@param  bool $preservePermissions
@throws Exception
@throws IOException
@return void
Copies a file using filter chains .