Класс 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.