Udostępnij za pośrednictwem


CFile::Open

Przeciążone.Otwórz jest przeznaczony dla domyślnie CFile konstruktora.

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

Parametry

  • lpszFileName
    Ciąg jest ścieżką do pliku.Ścieżka może być względna, bezwzględna lub nazwę sieciową (UNC).

  • nOpenFlags
    A UINT definiuje tryb udostępniania i dostępu pliku.Określa akcję wykonywaną po otwarciu pliku.Opcje można połączyć za pomocą (logiczną lub**|**) operatora.Wymagane są uprawnienia dostępu do jednego i jeden udział opcji; modeCreate i modeNoInherit tryby są opcjonalne.Zobacz CFile konstruktora dla opcji tryb.

  • pError
    Wskaźnik do istniejącego obiektu pliku wyjątek zostanie wyświetlony stan operacji nie powiodło się.

  • pTM
    Wskaźnik do obiektu CAtlTransactionManager

Wartość zwracana

Niezerowa, jeśli Otwórz zakończyła się pomyślnie; 0 inaczej.pError Parametr ma znaczenie tylko wtedy, gdy zwracane jest 0.

Uwagi

Dwie funkcje formularza "bezpieczne" metoda otwierania pliku, gdzie uszkodzenie jest normalna, oczekiwane warunek.

Podczas CFile Konstruktor wygeneruje wyjątek warunek błędu Otwórz zwróci FALSE warunków błędów.Otwórz nadal można zainicjować CFileException Obiekt opisujący błąd, jednak.Jeśli nie pError parametr, lub jeśli przekaże NULL dla pError, Otwórz zwróci FALSE i nie CFileException.Jeśli przekazuje się wskaźnik do istniejącego CFileException, i Otwórz napotyka błąd, funkcja będzie jednak wypełnić informacje opisujące tego błędu.W ani sprawa będzie Otwórz Zgłoś wyjątek.

W poniższej tabeli opisano możliwe wyniki Otwórz.

pError

Wystąpił błąd?

Zwracana wartość

Zawartość CFileException

WARTOŚĆ NULL

Nr

PRAWDA

Brak

PTR doCFileException

Nr

PRAWDA

bez zmian

WARTOŚĆ NULL

Tak

FAŁSZ

Brak

PTR doCFileException

Tak

FAŁSZ

zainicjowane do opisu błędu

Przykład

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

Wymagania

Nagłówek: afx.h

Zobacz też

Informacje

Klasa CFile

Wykres hierarchii

CFile::CFile

CFile::Close