Compartilhar via


CFile::Open

Sobrecarregado. Abrir é criado para uso com o construtor padrão de CFile .

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

Parâmetros

  • lpszFileName
    Uma cadeia de caracteres que é o caminho para o arquivo desejado. O caminho pode ser relativo ou absoluto, um nome de rede (UNC).

  • nOpenFlags
    UINT que define e compartilhar o modo de acesso de arquivo. Especifica a ação levar ao abrir o arquivo. Você pode combinar as opções usando a bits (OU bit **|**Operador). Uma permissão de acesso e uma opção de compartilhamento são necessários; os modos de modeCreate e de modeNoInherit são opcionais. Consulte o construtor de CFile para obter uma lista de opções o modo.

  • pError
    Um ponteiro para um objeto existente de arquivo exceção que recebe o status de uma operação falha.

  • pTM
    Ponteiro para o objeto de CAtlTransactionManager

Valor de retorno

Diferente de zero se o foi aberto com êxito; se não 0. O parâmetro de pError é significativa somente se 0 são retornados.

Comentários

As duas funções windows um método “segura” para abrir um arquivo onde uma falha é uma condição normal, esperada.

Quando o construtor de CFile lança uma exceção em uma condição de erro, Abrir retornará Falso para condições de erro. Abrir ainda pode inicializar um objeto de CFileException para descrever o entanto, erro. Se você não fornecer o parâmetro de pError , ou se você passar NULO para pError, Abrir retornará Falso e não irá acionar CFileException. Se você passar um ponteiro para CFileExceptionexistente, e encontra um erro de Abrir , a função preencher-o-&z com informações que descreve o erro. Em qualquer caso de Abrir lance uma exceção.

A tabela a seguir descreve os resultados possíveis de Abrir.

pError

Localizado erro?

Valor de Retorno

Conteúdo de CFileException

NULO

Não

TRUE

n/d

ptr a CFileException

Não

TRUE

inalterado

NULO

Sim

FALSE

n/d

ptr a CFileException

Sim

FALSE

inicializado para descrever o erro

Exemplo

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

Requisitos

Cabeçalho: afx.h

Consulte também

Referência

Classe CFile

Gráfico da hierarquia

CFile::CFile

CFile::Close