Aracılığıyla paylaş


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

Ayrıca bkz.

Başvuru

CFile sınıfı

Hiyerarşi grafik

CFile::CFile

CFile::Close