Текущий раздел:

Описания RDS

Приложения

Приложение А. Функции, константы и структуры RDS

А.5. Сервисные функции и макросы RDS

А.5.20. Работа с временными файлами

А.5.20.1. rdsTMPCreateEmptyFile – создать уникальный временный файл

# Приложения

## Приложение А. Функции, константы и структуры RDS

### А.5. Сервисные функции и макросы RDS

#### А.5.20. Работа с временными файлами

Описываются функции, облегчающие использование временных (автоматически удаляемых) файлов.

##### А.5.20.1. rdsTMPCreateEmptyFile – создать уникальный временный файл

Функция rdsTMPCreateEmptyFile создает пустой временный файл и возвращает его имя. В параметрах указывается желаемое имя файла с путем. Если такой файл существует, имя корректируется с сохранением пути и расширения.

      RDSSTR RDSCALL rdsTMPCreateEmptyFileA( // UTF8
        int SetId,           // Набор временных файлов
        RDSCSTR DesiredName  // Желаемое имя с путем (UTF8)
      );
      RDSWSTR RDSCALL rdsTMPCreateEmptyFileW( // UTF16
        int SetId,           // Набор временных файлов
        RDSWCSTR DesiredName // Желаемое имя с путем (UTF16)
      );
      // Функция-псевдоним
      RDSXSTR RDSCALL rdsTMPCreateEmptyFile( // Кодировка по умолчанию
        int SetId,           // Набор временных файлов
        RDSXCSTR DesiredName // Желаемое имя с путем (кодировка по умолчанию)
      );

Тип указателя на эту функцию

RDS_SIS (для UTF8) или RDS_WsIWs (для UTF16)

Параметры

SetId(int)
  Уникальный целый идентификатор набора временных файлов, к которому будет принадлежать этот файл.
DesiredName(RDSCSTR,RDSWCSTR,RDSXCSTR)
  Указатель на строку с желаемым именем файла. Имя должно содержать путь к файлу (возможно использование символических обозначений путей).

Возвращаемое значение

Указатель на строку во внутренней памяти RDS, содержащую полное (с путем) имя созданного временного файла.

Примечания

Эта функция создает пустой (нулевого размера) временный файл в папке, путь к к которой берется из желаемого имени файла DesiredName. Если на диске в данный момент нет файла с именем DesiredName, файл получит это имя. Если же такой файл уже есть, функция подберет для файла уникальное имя с тем же расширением и разместит его в этой же папке. Например, результат вызова

      char *name=rdsTMPCreateEmptyFileA(setid,"c:\\rds\\temp.tmp");

будет зависеть от того, существует ли на момент вызова функции файл «c:\rds\temp.tmp». Если такого файла нет, он будет создан, и функция вернет указатель на внутреннюю копию строки с его полным именем. Если файл уже есть, функция заменит часть имени файла, не относящуюся к пути и расширению, на уникальный для данной папки набор символов – например, «c:\rds\201114081443145.tmp».

Созданный файл будет принадлежать к набору временных файлов SetId. Наборы временных файлов создаются функцией rdsTMPCreateFileSet, они нужны для того, чтобы можно было уничтожить все файлы в наборе одним вызовом rdsTMPDeleteFileSet. При выгрузке схемы из памяти все временные файлы, созданные RDS, уничтожаются автоматически.

Строка, указатель на которую возвращает функция, находится во внутренней памяти RDS (и будет находиться там, пока этот временный файл не будет удален из набора или пока весь набор не будет удален), поэтому вызывающей программе не нужно освобождать ее.

Пример

Пример использования функции rdsTMPCreateEmptyFile приведен в §3.4 руководства программиста.

См. также

rdsTMPCreateFileSet, rdsTMPDeleteFileSet, rdsTMPCreateEmptyFileAnyExt, rdsTMPRememberFileName.