Sdílet prostřednictvím


CFile::Open

Přetíženo.Otevřít je navržena pro použití s výchozím CFile konstruktor.

virtual BOOL Open(
   LPCTSTR lpszFileName,
   UINT nOpenFlags,
   CFileException* pError = NULL 
);
virtual BOOL Open(
   LPCTSTR lpszFileName,
   UINT nOpenFlags,
   CAtlTransactionManager* pTM,
   CFileException* pError = NULL
);

Parametry

  • lpszFileName
    Řetězec, který je cesta požadovaný soubor.Cesta může být relativní, absolutní nebo síťový název (UNC).

  • nOpenFlags
    A UINT definuje režim sdílení a přístup souboru.Určuje akci při otevření souboru.Možnosti můžete kombinovat pomocí (bitový operátor OR**|**) operátor.Jednoho přístupového oprávnění a možnost sdílení jednoho jsou požadovány; modeCreate a modeNoInherit režimy jsou volitelné.Najdete CFile seznam možností režimu konstruktor.

  • pError
    Ukazatel na existující objekt výjimky souborů, který se zobrazí stav selhání operace.

  • pTM
    Ukazatel na objekt CAtlTransactionManager

Vrácená hodnota

Nenulová hodnota, pokud otevřít byla úspěšná. jinak 0. pError Parametr má význam pouze v případě, je vrácena 0.

Poznámky

Dvě funkce formuláře "bezpečná" metodu pro otevírání souboru, kde je selhání normální, očekávaného stavu.

Zatímco CFile konstruktor vyvolají výjimku v chybovou podmínku, Otevřít vrátí FALSE pro chybové podmínky.Otevřít stále možné inicializovat CFileException k popisu chyby, ale objekt.Pokud nezadáte pError parametr, nebo pokud je NULL pro pError , Open vrátí FALSE a není vyvolána CFileException .Pokud předáte ukazatel existující CFileException , a otevřených dostal k chybě funkce bude jej vyplnit informace popisující tuto chybu.Ani jeden případ bude v otevřených vyvoláním výjimky.

Následující tabulka popisuje možné výsledky otevřených.

pError

Došlo k chybě?

Vrácená hodnota

Obsah CFileException

NULL

Ne

TRUE

není k dispozici

PTR seCFileException

Ne

TRUE

beze změny

NULL

Ano

FALSE

není k dispozici

PTR seCFileException

Ano

FALSE

inicializovat popisující chyby

Příklad

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;
}

Požadavky

Záhlaví: afx.h

Viz také

Referenční dokumentace

Třída CFile

Diagram hierarchie

CFile::CFile

CFile::Close