Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Representerar en C-körningsströmfil som öppnas av körningsfunktionen fopen.
Syntax
class CStdioFile : public CFile
Medlemmar
Offentliga konstruktorer
| Namn | Beskrivning |
|---|---|
CStdioFile::CStdioFile |
Konstruerar ett CStdioFile objekt från en sökväg eller filpekare. |
Offentliga metoder
| Namn | Beskrivning |
|---|---|
CStdioFile::Open |
Överbelastad. Open är utformat för användning med standardkonstruktorn CStdioFile (åsidosättningar CFile::Open). |
CStdioFile::ReadString |
Läser en enda textrad. |
CStdioFile::Seek |
Placerar den aktuella filpekaren. |
CStdioFile::WriteString |
Skriver en enda textrad. |
Medlemmar i offentliga data
| Namn | Beskrivning |
|---|---|
CStdioFile::m_pStream |
Innehåller en pekare till en öppen fil. |
Anmärkningar
Stream-filer buffrad och kan öppnas i antingen textläge (standard) eller binärt läge.
Textläget ger särskild bearbetning för returlinjematningspar för vagn. När du skriver ett radmatningstecken (newline) (0x0A) till ett textlägesobjekt CStdioFile skickas byteparet (0x0D, 0x0A) till filen. När du läser översätts byteparet (0x0D, 0x0A) till en enda 0x0A byte.
Funktionerna CFileDuplicate, LockRangeoch UnlockRange stöds inte för CStdioFile.
Om du anropar dessa funktioner på en CStdioFilefår du en CNotSupportedException.
Mer information om hur du använder CStdioFilefinns i artiklarna Filer i MFC och Filhantering i Run-Time-biblioteksreferensen.
Arvshierarki
CStdioFile
Kravspecifikation
rubrik:afx.h
CStdioFile::CStdioFile
Konstruerar och initierar ett CStdioFile objekt.
CStdioFile();
CStdioFile(CAtlTransactionManager* pTM);
CStdioFile(FILE* pOpenStream);
CStdioFile(
LPCTSTR lpszFileName,
UINT nOpenFlags);
CStdioFile(
LPCTSTR lpszFileName,
UINT nOpenFlags,
CAtlTransactionManager* pTM);
Parameterar
pOpenStream
Anger filpekaren som returneras av ett anrop till C-körningsfunktionen fopen.
lpszFileName
Anger en sträng som är sökvägen till den önskade filen. Sökvägen kan vara relativ eller absolut.
nOpenFlags
Anger alternativ för att skapa filer, fildelning och filåtkomstlägen. Du kan ange flera alternativ med hjälp av operatorn bitvis OR ( | ).
Ett alternativ för filåtkomstläge krävs. andra lägen är valfria. Se CFile::CFile en lista över lägesalternativ och andra flaggor. I MFC version 3.0 och senare tillåts delningsflaggor.
pTM
Pekare till CAtlTransactionManager objekt.
Anmärkningar
Standardkonstruktorn bifogar inte en fil till objektet CStdioFile . När du använder den här konstruktorn måste du använda CStdioFile::Open metoden för att öppna en fil och koppla den CStdioFile till objektet.
Konstruktorn med en parameter kopplar en öppen filström till CStdioFile objektet. Tillåtna pekarvärden inkluderar fördefinierade in- och utdatafilpekare stdin, stdouteller stderr.
Konstruktorn med två parametrar skapar ett CStdioFile objekt och öppnar motsvarande fil med den angivna sökvägen.
Om du skickar NULL för antingen pOpenStream eller lpszFileNamegenererar konstruktorn en CInvalidArgException*.
Om filen inte kan öppnas eller skapas genererar konstruktorn en CFileException*.
Exempel
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
Datamedlemmen m_pStream är pekaren till en öppen fil som returneras av C-körningsfunktionen fopen.
FILE* m_pStream;
Anmärkningar
Det är NULL om filen aldrig har öppnats eller har stängts.
CStdioFile::Open
Överbelastad. Open är utformat för användning med standardkonstruktorn CStdioFile .
virtual BOOL Open(
LPCTSTR lpszFileName,
UINT nOpenFlags,
CFileException* pError = NULL);
virtual BOOL Open(
LPCTSTR lpszFileName,
UINT nOpenFlags,
CAtlTransactionManager* pTM,
CFileException* pError = NULL);
Parameterar
lpszFileName
En sträng som är sökvägen till önskad fil. Sökvägen kan vara relativ eller absolut.
nOpenFlags
Delnings- och åtkomstläge. Anger vilken åtgärd som ska vidtas när filen öppnas. Du kan kombinera alternativ med hjälp av operatorn bitwise-OR (|). Det krävs en åtkomstbehörighet och ett resursalternativ. lägeSkapa och lägeNoInherit är valfria.
pError
En pekare till ett befintligt filfelsobjekt som får statusen för en misslyckad åtgärd.
pTM
Pekare till ett CAtlTransactionManager objekt.
Returvärde
TRUE om det lyckas. annars FALSE.
Anmärkningar
CStdioFile::ReadString
Läser textdata till en buffert, upp till en gräns på nMax-1 tecken, från filen som är associerad med CStdioFile objektet.
virtual LPTSTR ReadString(
LPTSTR lpsz,
UINT nMax);
virtual BOOL ReadString(CString& rString);
Parameterar
lpsz
Anger en pekare till en buffert från användaren som får en null-avslutad textsträng.
nMax
Anger det maximala antalet tecken som ska skrivas till bufferten lpsz , inklusive avslutande null.
rString
En referens till ett CString objekt som innehåller strängen när funktionen returneras.
Returvärde
En pekare till bufferten som innehåller textdata.
NULL om filslut nåddes utan att läsa några data; eller om boolesk, FALSE om slutet av filen nåddes utan att läsa några data.
Anmärkningar
Läsningen stoppas av det första nyradstecknet. Om färre än nMax-1 tecken har lästs lagras ett nytt radtecken i bufferten. Ett null-tecken ('\0') läggs till i båda fallen.
CFile::Read är också tillgängligt för textlägesindata, men avslutas inte på ett returlinjematningspar för vagn.
Anmärkning
Versionen CString av den här funktionen tar bort '\n' om det LPTSTR finns. Versionen gör det inte.
Exempel
CStdioFile f(stdin);
TCHAR buf[100];
f.ReadString(buf, 99);
CStdioFile::Seek
Flyttar pekaren i en tidigare öppnad fil.
virtual ULONGLONG Seek(
LONGLONG lOff,
UINT nFrom);
Parameterar
lOff
Antal byte för att flytta pekaren.
nFrom
Rörelseläge för pekare. Måste vara något av följande värden:
CFile::begin: Flytta filpekarenlOffbyte framåt från början av filen.CFile::current: Flytta filpekarenslOffbyte från den aktuella positionen i filen.CFile::end: Flytta filpekarenslOffbyte från slutet av filen. Observera attlOffmåste vara negativt för att söka i den befintliga filen. Positiva värden söker sig förbi slutet av filen.
Returvärde
Om den begärda positionen är laglig Seek returnerar den nya byteförskjutningen från början av filen. Annars är returvärdet odefinierat och ett CFileException objekt genereras.
Anmärkningar
Funktionen Seek tillåter slumpmässig åtkomst till en fils innehåll genom att flytta pekaren en angiven mängd, absolut eller relativt. Inga data läss faktiskt under söksökningen. Om den begärda positionen är större än storleken på filen utökas fillängden till den positionen och inget undantag utlöses.
När en fil öppnas placeras filpekaren vid förskjutning 0, i början av filen.
Den här implementeringen av Seek baseras på funktionen fseekRun-Time Library (CRT). Det finns flera begränsningar för användningen av Seek på strömmar som öppnas i textläge. Mer information finns i fseek, _fseeki64.
Exempel
I följande exempel visas hur du använder Seek för att flytta pekaren 1 000 byte från början av cfile filen. Observera att Seek inte läser data, så du måste anropa för CStdioFile::ReadString att läsa data.
CStdioFile cfile(_T("Stdio_Seek_File.dat"), CFile::modeWrite |
CFile::modeCreate);
LONGLONG lOff = 1000;
ULONGLONG lActual = cfile.Seek(lOff, CFile::begin);
CStdioFile::WriteString
Skriver data från en buffert till filen som är associerad med CStdioFile objektet.
virtual void WriteString(LPCTSTR lpsz);
Parameterar
lpsz
Anger en pekare till en buffert som innehåller en null-avslutad sträng.
Anmärkningar
Det avslutande null-tecknet (\0) skrivs inte till filen. Den här metoden skriver nya radtecken i lpsz filen som ett vagnreturradsmatningspar.
Om du vill skriva data som inte är null-avslutade till en fil använder du CStdioFile::Write eller CFile::Write.
Den här metoden genererar en CInvalidArgException* om du anger NULL för parametern lpsz .
Den här metoden genererar ett CFileException* svar på filsystemfel.
Exempel
CStdioFile f(stdout);
TCHAR buf[] = _T("test string");
f.WriteString(buf);
Se även
CFile klass
hierarkidiagram
CFile klass
CFile::Duplicate
CFile::LockRange
CFile::UnlockRange
CNotSupportedException klass