public static function checkDupe($file, $dir = null) { if (null === $dir) { $dir = getcwd(); } $newFilename = $file; $parts = pathinfo($file); $origFilename = $parts['filename']; $ext = isset($parts['extension']) && $parts['extension'] != '' ? '.' . $parts['extension'] : null; $i = 1; while (file_exists($dir . DIRECTORY_SEPARATOR . $newFilename)) { $newFilename = $origFilename . '_' . $i . $ext; $i++; } return $newFilename; }
public function testCheckDupe() { $f = File::checkDupe('access.txt', __DIR__ . '/../tmp'); $this->assertEquals('access_1.txt', $f); $f = File::checkDupe('access.txt'); $this->assertEquals('access.txt', $f); }