将文件添加到存档后删除文件

时间:2015-05-21 13:36:11

标签: php

我有一个问题,所以我需要删除我添加到存档中的目录中的所有文件。我需要在zip()之后为删除文件创建另一个方法吗?或者我可以同时做? 我的存档添加代码:

define("PATH_TO_FILES_FOR_ARCHIVE","/tmp/");
define("NOM_OF_ARCHIVE","/tmp/folder.zip");


addZip(PATH_TO_FILES_FOR_ARCHIVE, NOM_OF_ARCHIVE);

function addZip($source, $destination)
{
if (!extension_loaded('zip') || !file_exists($source)) {
    return false;
}

$zip = new ZipArchive();
if (!$zip->open($destination, ZIPARCHIVE::CREATE)) {
    return false;
}
$source = str_replace('\\', '/', realpath($source));
if (is_dir($source) === true)
{
    $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);

    foreach ($files as $file)
    {
        $file = str_replace('\\', '/', $file);

        // Ignore "." and ".." folders
        if( in_array(substr($file, strrpos($file, '/')+1), array('.', '..')) )
            continue;

        $file = realpath($file);

        if (is_dir($file) === true)
        {
            $zip->addEmptyDir(str_replace($source . '/', '', $file . '/'));
        }
        else if (is_file($file) === true)
        {
            $zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file));
        }
    }
}
else if (is_file($source) === true)
{
    $zip->addFromString(basename($source), file_get_contents($source));
}
return $zip->close();
 }
提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果你只想删除它,那么你可以使用unlink()函数删除它,不需要为它编写另一个程序。

**Edited:**

else if (is_file($source) === true) //if this is a file then zip it
{
    $zip->addFromString(basename($source), file_get_contents($source));
 unlink($source)
}