CFile::Open
Aşırı yüklenmiş. Açık varsayılan ile kullanılmak üzere tasarlanmış CFile kurucusu.
virtual BOOL Open(
LPCTSTR lpszFileName,
UINT nOpenFlags,
CFileException* pError = NULL
);
virtual BOOL Open(
LPCTSTR lpszFileName,
UINT nOpenFlags,
CAtlTransactionManager* pTM,
CFileException* pError = NULL
);
Parametreler
lpszFileName
İstenen dosya yolu dizesi. Yol göreceli, mutlak veya ağ adı (unc) olabilir.nOpenFlags
A UINT , dosya paylaşımı ve erişim modunu tanımlar. Dosyayı açarken, gerçekleştirilecek eylemi belirtir. Bitsel or ()'i kullanarak seçenekleri birleştirebilirsiniz. |) işleci. Bir erişim izni ve bir paylaşım seçeneği gereklidir; modeCreate ve modeNoInherit modları isteğe bağlıdır. Bkz: CFile mod seçeneklerinin listesi için kurucu.pError
Başarısız işlem durumunu bildiren varolan dosya özel nesneye bir işaretçi.pTM
CAtlTransactionManager nesne işaretçisi
Dönüş Değeri
Sıfır olmayan bir değer açık başarılı olursa; Aksi halde 0. pError Parametre 0 döndürülürse anlamlı olur.
Notlar
İki işlevi bir hata normal, beklenen bir koşul olduğu bir dosya açmak için "güvenli" bir yöntem oluştururlar.
Sırada CFile yapıcı bir özel bir hata koşulu throw açık döner yanlış hata koşulları için. Açık hala sunabilmesi bir CFileException hata ancak açıklayan nesne. Belirlemezseniz, pError parametresi, ya da geçirmek, null için pError, açık döner yanlış ve değil oluşturması bir CFileException. Varolan bir işaretçiyi aktarýrsanýz CFileException, ve açık , karşılaştığı hata işlevi doldurur, hatayı açıklayan bilgiler ile. Büyük/küçük harf ne olacak, açık bir özel durum.
Aşağıdaki tabloda olası sonuçlarını açıklayan açık.
pError |
Karşılaşılan hata var mı? |
Dönüş değeri |
CFileException içeriği |
---|---|---|---|
NULL |
Hayyr |
TRUE |
n/a |
PTRCFileException |
Hayyr |
TRUE |
değişmeden |
NULL |
Evet |
FALSE |
n/a |
PTRCFileException |
Evet |
FALSE |
hatayı tanımlayacak başlatıldı |
Örnek
CFile f;
CFileException e;
TCHAR* pszFileName = _T("Open_File.dat");
if(!f.Open(pszFileName, CFile::modeCreate | CFile::modeWrite, &e))
{
TRACE(_T("File could not be opened %d\n"), e.m_cause);
}
//A second example for CFile::Open.
//This function uses CFile to copy binary files.
bool BinaryFileCopy(LPCTSTR pszSource, LPCTSTR pszDest)
{
// constructing these file objects doesn't open them
CFile sourceFile;
CFile destFile;
// we'll use a CFileException object to get error information
CFileException ex;
// open the source file for reading
if (!sourceFile.Open(pszSource,
CFile::modeRead | CFile::shareDenyWrite, &ex))
{
// complain if an error happened
// no need to delete the ex object
TCHAR szError[1024];
ex.GetErrorMessage(szError, 1024);
_tprintf_s(_T("Couldn't open source file: %1024s"), szError);
return false;
}
else
{
if (!destFile.Open(pszDest, CFile::modeWrite |
CFile::shareExclusive | CFile::modeCreate, &ex))
{
TCHAR szError[1024];
ex.GetErrorMessage(szError, 1024);
_tprintf_s(_T("Couldn't open source file: %1024s"), szError);
sourceFile.Close();
return false;
}
BYTE buffer[4096];
DWORD dwRead;
// Read in 4096-byte blocks,
// remember how many bytes were actually read,
// and try to write that many out. This loop ends
// when there are no more bytes to read.
do
{
dwRead = sourceFile.Read(buffer, 4096);
destFile.Write(buffer, dwRead);
}
while (dwRead > 0);
// Close both files
destFile.Close();
sourceFile.Close();
}
return true;
}
Gereksinimler
Başlık: afx.h