Поделиться через


Класс CAtlTemporaryFile

Этот класс предоставляет методы для создания и использования временного файла.

Важно!

Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.

Синтаксис

class CAtlTemporaryFile

Участники

Открытые конструкторы

Имя Описание
CAtlTemporaryFile::CAtlTemporaryFile Конструктор.
CAtlTemporaryFile::~CAtlTemporaryFile Деструктор

Открытые методы

Имя Описание
CAtlTemporaryFile::Close Вызовите этот метод, чтобы закрыть временный файл и удалить его содержимое или сохранить их под указанным именем файла.
CAtlTemporaryFile::Create Вызовите этот метод для создания временного файла.
CAtlTemporaryFile::Flush Вызовите этот метод, чтобы принудительно записать все данные, оставшиеся в буфере файла, в временный файл.
CAtlTemporaryFile::GetPosition Вызовите этот метод, чтобы получить текущее положение указателя файла.
CAtlTemporaryFile::GetSize Вызовите этот метод, чтобы получить размер в байтах временного файла.
CAtlTemporaryFile::HandsOff Вызовите этот метод, чтобы отсоединить файл от CAtlTemporaryFile объекта.
CAtlTemporaryFile::HandsOn Вызовите этот метод, чтобы открыть существующий временный файл и разместить указатель в конце файла.
CAtlTemporaryFile::LockRange Вызовите этот метод, чтобы заблокировать регион в файле, чтобы предотвратить доступ к нему других процессов.
CAtlTemporaryFile::Read Вызовите этот метод для чтения данных из временного файла, начиная с позиции, указанной указателем файла.
CAtlTemporaryFile::Seek Вызовите этот метод для перемещения указателя на файл временного файла.
CAtlTemporaryFile::SetSize Вызовите этот метод, чтобы задать размер временного файла.
CAtlTemporaryFile::TempFileName Вызовите этот метод, чтобы вернуть имя временного файла.
CAtlTemporaryFile::UnlockRange Вызовите этот метод, чтобы разблокировать регион временного файла.
CAtlTemporaryFile::Write Вызовите этот метод для записи данных во временный файл, начиная с позиции, указанной указателем файла.

Открытые операторы

Имя Описание
CAtlTemporaryFile::operator HANDLE Возвращает дескриптор во временный файл.

Замечания

CAtlTemporaryFile упрощает создание и использование временного файла. Файл автоматически называется, открывается, закрывается и удаляется. Если содержимое файла необходимо после закрытия файла, их можно сохранить в новом файле с указанным именем.

Требования

Заголовок: atlfile.h

Пример

См. пример CAtlTemporaryFile::CAtlTemporaryFile.

CAtlTemporaryFile::CAtlTemporaryFile

Конструктор.

CAtlTemporaryFile() throw();

Замечания

Файл не открывается, пока вызов не будет выполнен в CAtlTemporaryFile::Create.

Пример

// Declare the temporary file object
CAtlTemporaryFile myTempFile;

// Create the temporary file, without caring where it
// will be created, but with both read and write access.
ATLVERIFY (myTempFile.Create(NULL, GENERIC_READ|GENERIC_WRITE) == S_OK);

// Create some data to write to the file

int nBuffer[100];
DWORD bytes_written = 0, bytes_read = 0;
int i;

for (i = 0; i < 100; i++)
   nBuffer[i] = i;

// Write some data to the file
myTempFile.Write(&nBuffer, sizeof(nBuffer), &bytes_written);

// Confirm it was written ok
ATLASSERT(bytes_written == sizeof(nBuffer));

// Flush the data to disk
ATLVERIFY(myTempFile.Flush() == S_OK);

// Reset the file pointer to the beginning of the file
ATLVERIFY(myTempFile.Seek(0, FILE_BEGIN) == S_OK);

// Read in the data
myTempFile.Read(&nBuffer, sizeof(nBuffer), bytes_read);

// Confirm it was read ok
ATLASSERT(bytes_read == sizeof(nBuffer));

// Close the file, making a copy of it at another location
ATLVERIFY(myTempFile.Close(_T("c:\\temp\\mydata.tmp")) == S_OK);

CAtlTemporaryFile::~CAtlTemporaryFile

Деструктор

~CAtlTemporaryFile() throw();

Замечания

Деструктор вызывает CAtlTemporaryFile::Close.

CAtlTemporaryFile::Close

Вызовите этот метод, чтобы закрыть временный файл и удалить его содержимое или сохранить их под указанным именем файла.

HRESULT Close(LPCTSTR szNewName = NULL) throw();

Параметры

szNewName
Имя нового файла для хранения содержимого временного файла. Если этот аргумент имеет значение NULL, содержимое временного файла удаляется.

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

Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.

Пример

См. пример CAtlTemporaryFile::CAtlTemporaryFile.

CAtlTemporaryFile::Create

Вызовите этот метод для создания временного файла.

HRESULT Create(LPCTSTR pszDir = NULL, DWORD dwDesiredAccess = GENERIC_WRITE) throw();

Параметры

pszDir
Путь к временному файлу. Если это значение NULL, Метод GetTempPath будет вызываться для назначения пути.

dwDesiredAccess
Требуемый доступ. См. dwDesiredAccess в CreateFile в пакете SDK для Windows.

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

Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.

Пример

См. пример CAtlTemporaryFile::CAtlTemporaryFile.

CAtlTemporaryFile::Flush

Вызовите этот метод, чтобы принудительно записать все данные, оставшиеся в буфере файла, в временный файл.

HRESULT Flush() throw();

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

Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.

Замечания

Аналогично CAtlTemporaryFile::HandsOff, за исключением того, что файл не закрыт.

Пример

См. пример CAtlTemporaryFile::CAtlTemporaryFile.

CAtlTemporaryFile::GetPosition

Вызовите этот метод, чтобы получить текущее положение указателя файла.

HRESULT GetPosition(ULONGLONG& nPos) const throw();

Параметры

Npos
Позиция в байтах.

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

Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.

Замечания

Чтобы изменить положение указателя файла, используйте CAtlTemporaryFile::Seek.

CAtlTemporaryFile::GetSize

Вызовите этот метод, чтобы получить размер в байтах временного файла.

HRESULT GetSize(ULONGLONG& nLen) const throw();

Параметры

nLen
Количество байтов в файле.

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

Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.

CAtlTemporaryFile::HandsOff

Вызовите этот метод, чтобы отсоединить файл от CAtlTemporaryFile объекта.

HRESULT HandsOff() throw();

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

Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.

Замечания

HandsOff и CAtlTemporaryFile::HandsOn используются для отмены связывания файла с объектом и повторного кэширования при необходимости. HandsOff принудит все данные, оставшиеся в буфере файлов, записываются во временный файл, а затем закрывают файл. Если вы хотите закрыть и удалить файл окончательно или сохранить содержимое файла с заданным именем, используйте CAtlTemporaryFile::Close.

CAtlTemporaryFile::HandsOn

Вызовите этот метод, чтобы открыть существующий временный файл и разместить указатель в конце файла.

HRESULT HandsOn() throw();

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

Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.

Замечания

CAtlTemporaryFile::HandsOff и HandsOn используются для отсоединения файла от объекта и повторного кэширования при необходимости.

CAtlTemporaryFile::LockRange

Вызовите этот метод, чтобы заблокировать регион во временном файле, чтобы предотвратить доступ к нему других процессов.

HRESULT LockRange(ULONGLONG nPos, ULONGLONG nCount) throw();

Параметры

Npos
Позиция в файле, в котором должна начинаться блокировка.

Ncount
Длина диапазона байтов, которую необходимо заблокировать.

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

Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.

Замечания

Блокировка байтов в файле предотвращает доступ других процессов к этим байтам. Вы можете заблокировать несколько областей файла, но перекрывающиеся регионы не разрешены. Чтобы успешно разблокировать регион, используйте CAtlTemporaryFile::UnlockRange, обеспечивая точное соответствие диапазона байтов региону, который ранее был заблокирован. LockRange не объединяет смежные регионы; Если два заблокированных региона находятся рядом, необходимо разблокировать каждую отдельно.

CAtlTemporaryFile::operator HANDLE

Возвращает дескриптор во временный файл.

operator HANDLE() throw();

CAtlTemporaryFile::Read

Вызовите этот метод для чтения данных из временного файла, начиная с позиции, указанной указателем файла.

HRESULT Read(
    LPVOID pBuffer,
    DWORD nBufSize,
    DWORD& nBytesRead) throw();

Параметры

pBuffer
Указатель на буфер, который получит данные, считываемые из файла.

nBufSize
Размер буфера в байтах.

nBytesRead
Число переданных байтов.

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

Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.

Замечания

Вызывает CAtlFile::Read. Чтобы изменить положение указателя файла, вызовите CAtlTemporaryFile::Seek.

Пример

См. пример CAtlTemporaryFile::CAtlTemporaryFile.

CAtlTemporaryFile::Seek

Вызовите этот метод для перемещения указателя на файл временного файла.

HRESULT Seek(LONGLONG nOffset, DWORD dwFrom = FILE_CURRENT) throw();

Параметры

nOffset
Смещение в байтах с начальной точки, заданной dwFrom.

dwFrom
Начальная точка (FILE_BEGIN, FILE_CURRENT или FILE_END).

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

Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.

Замечания

Вызывает CAtlFile::Seek. Чтобы получить текущую позицию указателя файла, вызовите CAtlTemporaryFile::GetPosition.

Пример

См. пример CAtlTemporaryFile::CAtlTemporaryFile.

CAtlTemporaryFile::SetSize

Вызовите этот метод, чтобы задать размер временного файла.

HRESULT SetSize(ULONGLONG nNewLen) throw();

Параметры

nNewLen
Новая длина файла в байтах.

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

Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.

Замечания

Вызывает CAtlFile::SetSize. При возврате указатель на файл размещается в конце файла.

CAtlTemporaryFile::TempFileName

Вызовите этот метод, чтобы вернуть имя временного файла.

LPCTSTR TempFileName() throw();

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

Возвращает LPCTSTR, указывающий на имя файла.

Замечания

Имя файла создается в CAtlTemporaryFile::CAtlTemporaryFile с вызовом функции Пакета SDK для Windows GetTempFile. Расширение файла всегда будет "TFR" для временного файла.

CAtlTemporaryFile::UnlockRange

Вызовите этот метод, чтобы разблокировать регион временного файла.

HRESULT UnlockRange(ULONGLONG nPos, ULONGLONG nCount) throw();

Параметры

Npos
Позиция в файле, в котором должна начинаться разблокировка.

Ncount
Длина диапазона байтов, которую необходимо разблокировать.

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

Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.

Замечания

Вызывает CAtlFile::UnlockRange.

CAtlTemporaryFile::Write

Вызовите этот метод для записи данных во временный файл, начиная с позиции, указанной указателем файла.

HRESULT Write(
    LPCVOID pBuffer,
    DWORD nBufSize,
    DWORD* pnBytesWritten = NULL) throw();

Параметры

pBuffer
Буфер, содержащий данные, записываемые в файл.

nBufSize
Количество байтов, передаваемых из буфера.

pnBytesWritten
Количество записанных байт.

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

Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.

Замечания

Вызывает CAtlFile::Write.

Пример

См. пример CAtlTemporaryFile::CAtlTemporaryFile.

См. также

Общие сведения о классе
Класс CAtlFile