0

如果目录不存在,我创建目录并保存文件,如果目录存在,我也可以只保存文件。应该一次创建一个文件,而不是像下面的代码那样同时创建一个文件。如果现在创建了第一个文件,那么只应在调用函数时创建下一个文件。这些文件被命名为 R1,R2....Rn。我怎样才能做到这一点,这会同时创建它们

$fileName1=$fileName1='somedir/'.$thedir.'/'.$thefile.'_R1.xlsx';

...

if (!dir($dirName)) 
{
    mkdir('somedir/' . thedir, 0777);
    $objWriter->save($fileName);
}

if (dir($dirName) && (!file_exists($fileName))) 
{
    $objWriter->save($fileName);
} 

if (dir($dirName) && file_exists($fileName)) 
{
    $objWriter->save('somedir/' . $thedir . '/' . $thefile . '_R1.xlsx');
}

if (dir($dirName) && file_exists($fileName1)) 
{
    $objWriter->save('somedir/' . $thedir . '/' . $thefile . '_R2.xlsx');
}

...
4

2 回答 2

0
if (!is_dir($dir))
  mkdir($dir, 0777);

$suffixes = array('_R1.xlsx', '_R2.xlsx');
foreach($suffixes as $suffix) {
  $fileName = $dir.'/' . $thefile . $suffix;
  if (! file_exists($fileName)) {
    $objWriter->save($fileName);
    break;
  }
}

您必须添加错误处理,并注意仅检查文件可能会产生并发问题(两个进程都尝试查看文件不存在并尝试创建它)。

于 2012-10-25T14:55:34.903 回答
0

您将需要使用该[is_dir][1]功能来检查文件夹是否存在。

查看此代码 - 对您的代码进行了一些修改

$fileName1=$fileName1='somedir/'.$thedir.'/'.$thefile.'_R1.xlsx';
....

// Directory does not exist - create it
if (!is_dir($dirName)) 
{
    mkdir('somedir/' . thedir, 0777);
    $objWriter->save($fileName);
}

// Directory exists
if (is_dir($dirName))
{
    // File does not exist - create it
    if (!file_exists($fileName))) 
    {
        $objWriter->save($fileName);
    } 

    // Check one more time if the file exists
    if (file_exists($fileName))) 
    {
        $objWriter->save('somedir/' . $thedir . '/' . $thefile . '_R1.xlsx');
        $objWriter->save('somedir/' . $thedir . '/' . $thefile . '_R2.xlsx');
    }
}

.......
于 2012-10-25T14:55:57.790 回答