public function remove($path) {
        // using mark.
        if ('@' == $path[0]) $path = $this->as($path);
        
        // remove file.
        if (is_file($path)) return unlink($path);

        // remove directory.
        $handle = opendir($path);
        while (false !== ($name = readdir($handle))) {
            if ('.' == $name or '..' == $name) continue;
            if (!$this->remove($path.self::DS.$name)) return false;
        }
        closedir($handle);
        return rmdir($path);
    }