Megosztás:


CStdioFile osztály

A futásidejű függvény fopenáltal megnyitott C futásidejű streamfájlt jelöli.

Szemantika

class CStdioFile : public CFile

Tagok

Nyilvános konstruktorok

Név Leírás
CStdioFile::CStdioFile Objektumot CStdioFile hoz létre egy elérési útból vagy egy fájlmutatóból.

Nyilvános metódusok

Név Leírás
CStdioFile::Open Túlterhelt. A Megnyitás az alapértelmezett CStdioFile konstruktorhoz (felülbírálásokhoz CFile::Open) készült.
CStdioFile::ReadString Egyetlen sornyi szöveget olvas be.
CStdioFile::Seek Az aktuális fájlmutató elhelyezése.
CStdioFile::WriteString Egyetlen sornyi szöveget ír.

Nyilvános adatok tagjai

Név Leírás
CStdioFile::m_pStream Egy megnyitott fájlra mutató mutatót tartalmaz.

Megjegyzések

A streamfájlok pufferelve vannak, és megnyithatók szöveges módban (az alapértelmezett) vagy bináris módban.

A szöveg mód speciális feldolgozást biztosít a kocsivisszasoros hírcsatornapárokhoz. Amikor sorcsatornajelet (0x0A) ír egy szövegmódú CStdioFile objektumba, a bájtpár (0x0D, 0x0A) el lesz küldve a fájlba. Olvasáskor a bájtpár (0x0D, 0x0A) egyetlen 0x0A bájtra lesz lefordítva.

A CFile függvények Duplicate, LockRangeés UnlockRange nem támogatottak.CStdioFile

Ha ezeket a függvényeket egy CStdioFilehívó számon hívja meg, kap egy CNotSupportedException.

További információ a használatról CStdioFile: Fájlok az MFC-ben és a fájlkezelés a Run-Time könyvtár referenciájában.

Öröklési hierarchia

CObject

CFile

CStdioFile

Követelmények

fejléc:afx.h

CStdioFile::CStdioFile

Létrehoz és inicializál egy CStdioFile objektumot.

CStdioFile();
CStdioFile(CAtlTransactionManager* pTM);
CStdioFile(FILE* pOpenStream);

CStdioFile(
    LPCTSTR lpszFileName,
    UINT nOpenFlags);

CStdioFile(
    LPCTSTR lpszFileName,
    UINT nOpenFlags,
    CAtlTransactionManager* pTM);

Paraméterek

pOpenStream
Megadja a C futásidejű függvény fopenhívása által visszaadott fájlmutatót.

lpszFileName
Egy sztringet ad meg, amely a kívánt fájl elérési útja. Az elérési út lehet relatív vagy abszolút.

nOpenFlags
Megadja a fájllétrehozás, a fájlmegosztás és a fájlhozzáférési módok beállításait. A bitenkénti OR ( | ) operátorral több beállítást is megadhat.

Egy fájlelérési módra van szükség; más módok nem kötelezők. Tekintse meg CFile::CFile a módbeállítások és egyéb jelzők listáját. Az MFC 3.0-s és újabb verzióiban a megosztásjelzők engedélyezettek.

pTM
Mutasson az objektumra CAtlTransactionManager .

Megjegyzések

Az alapértelmezett konstruktor nem csatol fájlokat az CStdioFile objektumhoz. A konstruktor használatakor a CStdioFile::Open módszerrel meg kell nyitnia egy fájlt, és csatolnia kell az CStdioFile objektumhoz.

Az egyparaméteres konstruktor egy nyitott fájlstreamet csatol az CStdioFile objektumhoz. Az engedélyezett mutatóértékek közé tartoznak az előre definiált bemeneti/kimeneti fájl mutatói stdinvagy stdoutstderr.

A kétparaméteres konstruktor létrehoz egy CStdioFile objektumot, és megnyitja a megfelelő fájlt a megadott elérési úttal.

Ha a konstruktor vagy valamelyiknek ad átNULL, a konstruktor egy pOpenStream.lpszFileNameCInvalidArgException*

Ha a fájl nem nyitható meg vagy hozható létre, a konstruktor egy CFileException*.

példa

TCHAR* pFileName = _T("CStdio_File.dat");
CStdioFile f1;
if(!f1.Open(pFileName, CFile::modeCreate | CFile::modeWrite 
   | CFile::typeText)) 
{
   TRACE(_T("Unable to open file\n"));
}

CStdioFile f2(stdout);
try
{
   CStdioFile f3( pFileName,
      CFile::modeCreate | CFile::modeWrite | CFile::typeText );
}
catch(CFileException* pe)
{
   TRACE(_T("File could not be opened, cause = %d\n"),
      pe->m_cause);
   pe->Delete();
}

CStdioFile::m_pStream

Az m_pStream adattag a C futásidejű függvény fopenáltal visszaadott megnyitott fájlra mutató mutató.

FILE* m_pStream;

Megjegyzések

NULL Ha a fájlt még nem nyitották meg vagy zárták be.

CStdioFile::Open

Túlterhelt. A Megnyitás az alapértelmezett CStdioFile konstruktorhoz készült.

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

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

Paraméterek

lpszFileName
Egy sztring, amely a kívánt fájl elérési útja. Az elérési út lehet relatív vagy abszolút.

nOpenFlags
Megosztási és hozzáférési mód. Megadja a fájl megnyitásakor végrehajtandó műveletet. A beállításokat a bitenkénti VAGY (|) operátorral kombinálhatja. Egy hozzáférési engedélyre és egy megosztási lehetőségre van szükség; a modeCreate és modeNoInherit módok nem kötelezőek.

pError
Egy meglévő fájlkivételi objektumra mutató mutató, amely egy sikertelen művelet állapotát fogja kapni.

pTM
Mutasson egy CAtlTransactionManager objektumra.

Visszaadott érték

sikeres TRUE; egyéb esetben FALSE.

Megjegyzések

CStdioFile::ReadString

Szöveges adatokat olvas be egy pufferbe, legfeljebb -1 karakteres korlátig nMaxaz CStdioFile objektumhoz társított fájlból.

virtual LPTSTR ReadString(
    LPTSTR lpsz,
    UINT nMax);

virtual BOOL ReadString(CString& rString);

Paraméterek

lpsz
A felhasználó által megadott pufferre mutató mutatót ad meg, amely null értékű szöveges sztringet fog kapni.

nMax
Megadja a pufferbe lpsz írható karakterek maximális számát, beleértve a null értéket is.

rString
Hivatkozás egy CString objektumra, amely a függvény visszatérésekor tartalmazni fogja a sztringet.

Visszaadott érték

Mutató a szöveges adatokat tartalmazó pufferre. NULL ha a fájl vége adatolvasás nélkül lett elérve; vagy logikai érték esetén, FALSE ha a fájl vége adatolvasás nélkül lett elérve.

Megjegyzések

Az olvasást az első újvonalas karakter leállítja. Ha ebben az esetben a rendszer -1 karakternél nMaxkevesebb karaktert olvas be, a rendszer egy újsoros karaktert tárol a pufferben. A null karakter ('\0') mindkét esetben hozzá van fűzve.

CFile::Read szöveg módú bemenethez is elérhető, de nem végződik visszaútvonalas kocsiadagoló páron.

Megjegyzés:

A CString függvény verziója eltávolítja a '\n' ha van, a LPTSTR verzió pedig nem.

példa

CStdioFile f(stdin);
TCHAR buf[100];

f.ReadString(buf, 99);

CStdioFile::Seek

Áthelyezi az egérmutatót egy korábban megnyitott fájlban.

virtual ULONGLONG Seek(
    LONGLONG lOff,
    UINT nFrom);

Paraméterek

lOff
Az egérmutató mozgatásához megadott bájtok száma.

nFrom
Mutató mozgatási módja. Az alábbi értékek egyikének kell lennie:

  • CFile::begin: Vigye a fájlmutató lOff bájtját előre a fájl elejéről.

  • CFile::current: Helyezze át a fájlmutató lOff bájtokat a fájl aktuális pozíciójából.

  • CFile::end: Helyezze át a fájlmutató lOff bájtját a fájl végéről. Vegye figyelembe, hogy lOff a meglévő fájlba való kereséshez negatívnak kell lennie; a pozitív értékek a fájl végén fognak keresni.

Visszaadott érték

Ha a kért pozíció jogszerű, Seek a fájl elejétől számítja ki az új bájteltolást. Ellenkező esetben a visszatérési érték nincs definiálva, és egy CFileException objektum lesz dobva.

Megjegyzések

A Seek függvény lehetővé teszi a fájl tartalmának véletlenszerű elérését úgy, hogy a mutatót egy megadott mennyiségre helyezi, teljesen vagy viszonylag. A keresés során nem olvashatók be adatok. Ha a kért pozíció nagyobb, mint a fájl mérete, a fájl hossza erre a pozícióra lesz kiterjesztve, és a rendszer nem ad kivételt.

Amikor megnyit egy fájlt, a fájlmutató a 0. eltolásnál, a fájl elejénél lesz elhelyezve.

Ennek megvalósítása Seek a Run-Time Könyvtár (CRT) függvényen fseekalapul. A szöveges módban megnyitott streamek használatának Seek több korlátja is van. További információ: fseek. _fseeki64

példa

Az alábbi példa bemutatja, Seek hogyan helyezheti át a mutatót 1000 bájtnyira a cfile fájl elejéről. Vegye figyelembe, hogy Seek nem olvas adatokat, ezért később fel kell hívnia CStdioFile::ReadString az adatok olvasására.

CStdioFile cfile(_T("Stdio_Seek_File.dat"), CFile::modeWrite |
   CFile::modeCreate);
LONGLONG lOff = 1000;
ULONGLONG lActual = cfile.Seek(lOff, CFile::begin);

CStdioFile::WriteString

Adatokat ír egy pufferből az objektumhoz társított fájlba CStdioFile .

virtual void WriteString(LPCTSTR lpsz);

Paraméterek

lpsz
Null értékű sztringet tartalmazó pufferre mutató mutatót ad meg.

Megjegyzések

A megszakító null karakter (\0) nincs a fájlba írva. Ez a metódus újvonalas karaktereket ír be a fájlba lpsz kocsivisszavonalas hírcsatornapárként.

Ha olyan adatokat szeretne írni, amelyek nem null értékűek egy fájlba, használja CStdioFile::Write vagy CFile::Write.

Ez a metódus egy értéket ad CInvalidArgException* meg, ha megadja NULL a paramétert lpsz .

Ez a módszer választ ad CFileException* a fájlrendszer hibáira.

példa

CStdioFile f(stdout);
TCHAR buf[] = _T("test string");

f.WriteString(buf);

Lásd még

CFile osztály
hierarchiadiagram
CFile osztály
CFile::Duplicate
CFile::LockRange
CFile::UnlockRange
CNotSupportedException osztály