0

ディレクトリが存在しない場合は、ディレクトリを作成してファイルを保存します。ディレクトリが存在する場合は、ファイルを保存することもできます。以下のコードのように、一度に 1 つのファイルを作成する必要があります。最初のファイルが作成された場合、次のファイルは関数が呼び出されたときにのみ作成されます。ファイルの名前は 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;
  }
}

エラー処理を追加する必要があります。また、ファイルをチェックするだけでも同時実行性の問題が発生する可能性があることに注意してください (2 つのプロセスが、ファイルが存在しないことを確認して作成しようとします)。

于 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 に答える