Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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
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ólOffbájtját előre a fájl elejéről.CFile::current: Helyezze át a fájlmutatólOffbájtokat a fájl aktuális pozíciójából.CFile::end: Helyezze át a fájlmutatólOffbájtját a fájl végéről. Vegye figyelembe, hogylOffa 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