Share via


CInternetFile-klasse

Opmerking

De Microsoft Foundation Classes-bibliotheek (MFC) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Hiermee verleent u toegang tot bestanden op externe systemen die gebruikmaken van internetprotocollen.

Syntaxis

class CInternetFile : public CStdioFile

Leden

Beveiligde constructors

Naam Description
CInternetFile::CInternetFile Maakt een CInternetFile object.

Openbare methoden

Naam Description
CInternetFile::Abort Hiermee sluit u het bestand, waarbij alle waarschuwingen en fouten worden genegeerd.
CInternetFile::Close Hiermee sluit u een CInternetFile en worden de resources vrijgemaakt.
CInternetFile::Flush De inhoud van de schrijfbuffer leegmaken en ervoor zorgen dat de gegevens in het geheugen naar de doelcomputer worden geschreven.
CInternetFile::GetLength Retourneert de grootte van het bestand.
CInternetFile::Read Hiermee wordt het aantal opgegeven bytes gelezen.
CInternetFile::ReadString Leest een stroom tekens.
CInternetFile::Seek Hiermee verplaatst u de aanwijzer in een geopend bestand.
CInternetFile::SetReadBufferSize Hiermee stelt u de grootte van de buffer in waar gegevens worden gelezen.
CInternetFile::SetWriteBufferSize Hiermee stelt u de grootte van de buffer in waar gegevens worden geschreven.
CInternetFile::Write Hiermee schrijft u het aantal opgegeven bytes.
CInternetFile::WriteString Hiermee schrijft u een door null beëindigde tekenreeks naar een bestand.

Openbare operators

Naam Description
CInternetFile::operator ACHTERNET Een cast-operator voor een internethandgreep.

Beveiligde gegevensleden

Naam Description
CInternetFile::m_hFile Een ingang naar een bestand.

Opmerkingen

Biedt een basisklasse voor de klassen CHttpFile en CGopherFile . U maakt nooit rechtstreeks een CInternetFile object. Maak in plaats daarvan een object van een van de afgeleide klassen door CGopherConnection::OpenFile of CHttpConnection::OpenRequest aan te roepen. U kunt ook een CInternetFile object maken door CFtpConnection::OpenFile aan te roepen.

De CInternetFile lidfuncties Open, LockRangeen UnlockRangeDuplicate zijn niet geïmplementeerd voor CInternetFile. Als u deze functies op een CInternetFile object aanroept, krijgt u een CNotSupportedException.

Zie het artikel Internetprogrammering met WinInet voor meer informatie over het CInternetFile werken met de andere MFC-internetklassen.

Overnamehiërarchie

CObject

CFile

CStdioFile

CInternetFile

Requirements

Koptekst: afxinet.h

CInternetFile::Abort

Hiermee sluit u het bestand dat aan dit object is gekoppeld en is het bestand niet beschikbaar voor lezen of schrijven.

virtual void Abort();

Opmerkingen

Als u het bestand niet hebt gesloten voordat u het object vernietigt, sluit de destructor het voor u.

Bij het afhandelen van uitzonderingen verschilt Abort het op twee belangrijke manieren van Sluiten . Ten eerste genereert de Abort functie geen uitzondering op fouten omdat fouten worden genegeerd. Ten tweede wordt Abort niet assertie uitgevoerd als het bestand niet is geopend of eerder is gesloten.

CInternetFile::CInternetFile

Deze lidfunctie wordt aangeroepen wanneer een CInternetFile object wordt gemaakt.

CInternetFile(
    HINTERNET hFile,
    LPCTSTR pstrFileName,
    CInternetConnection* pConnection,
    BOOL bReadMode);

CInternetFile(
    HINTERNET hFile,
    HINTERNET hSession,
    LPCTSTR pstrFileName,
    LPCTSTR pstrServer,
    DWORD_PTR dwContext,
    BOOL bReadMode);

Parameterwaarden

hFile
Een ingang naar een internetbestand.

pstrFileName
Een aanwijzer naar een tekenreeks met de bestandsnaam.

pConnection
Een aanwijzer naar een CInternetConnection-object .

bReadMode
Geeft aan of het bestand het kenmerk Alleen-lezen heeft.

hSession
Een ingang voor een internetsessie.

pstrServer
Een aanwijzer naar een tekenreeks die de naam van de server bevat.

dwContext
De context-id voor het CInternetFile object. Zie WinInet Basics voor meer informatie over de context-id.

Opmerkingen

U maakt nooit rechtstreeks een CInternetFile object. Maak in plaats daarvan een object van een van de afgeleide klassen door CGopherConnection::OpenFile of CHttpConnection::OpenRequest aan te roepen. U kunt ook een CInternetFile object maken door CFtpConnection::OpenFile aan te roepen.

CInternetFile::Close

Hiermee sluit u een CInternetFile en verwijdert u alle resources.

virtual void Close();

Opmerkingen

Als het bestand is geopend voor schrijven, is er een impliciete aanroep naar Flush om ervoor te zorgen dat alle gebufferde gegevens naar de host worden geschreven. U moet bellen Close wanneer u klaar bent met het gebruik van een bestand.

CInternetFile::Flush

Roep deze lidfunctie aan om de inhoud van de schrijfbuffer leeg te maken.

virtual void Flush();

Opmerkingen

Gebruik Flush dit om ervoor te zorgen dat alle gegevens in het geheugen daadwerkelijk naar de doelcomputer zijn geschreven en om uw transactie met de hostmachine te verzekeren is voltooid. Flush is alleen effectief voor CInternetFile objecten die zijn geopend voor schrijven.

CInternetFile::GetLength

Retourneert de grootte van het bestand.

virtual ULONGLONG GetLength() const;

CInternetFile::m_hFile

Een ingang voor het bestand dat aan dit object is gekoppeld.

HINTERNET m_hFile;

CInternetFile::operator ACHTERNET

Gebruik deze operator om de Windows-ingang voor de huidige internetsessie op te halen.

operator HINTERNET() const;

CInternetFile::Read

Roep deze lidfunctie aan om in het opgegeven geheugen te lezen, te beginnen bij lpvBuf, het opgegeven aantal bytes, nCount.

virtual UINT Read(
    void* lpBuf,
    UINT nCount);

Parameterwaarden

lpBuf
Een aanwijzer naar een geheugenadres waarnaar bestandsgegevens worden gelezen.

nCount
Het aantal te schrijven bytes.

Retourwaarde

Het aantal bytes dat naar de buffer is overgebracht. De retourwaarde kan kleiner zijn dan nCount als het einde van het bestand is bereikt.

Opmerkingen

De functie retourneert het aantal bytes dat daadwerkelijk is gelezen, een getal dat mogelijk kleiner is dan nCount als het bestand eindigt. Als er een fout optreedt tijdens het lezen van het bestand, genereert de functie een CInternetException-object dat de fout beschrijft. Houd er rekening mee dat het lezen voorbij het einde van het bestand niet wordt beschouwd als een fout en dat er geen uitzondering wordt gegenereerd.

Om ervoor te zorgen dat alle gegevens worden opgehaald, moet een toepassing de CInternetFile::Read methode blijven aanroepen totdat de methode nul retourneert.

CInternetFile::ReadString

Roep deze lidfunctie aan om een stroom tekens te lezen totdat er een nieuw regelteken wordt gevonden.

virtual BOOL ReadString(CString& rString);

virtual LPTSTR ReadString(
    LPTSTR pstr,
    UINT nMax);

Parameterwaarden

pstr
Een aanwijzer naar een tekenreeks die de regel ontvangt die wordt gelezen.

nMax
Het maximum aantal tekens dat moet worden gelezen.

rString
Een verwijzing naar het CString-object dat de leesregel ontvangt.

Retourwaarde

Een aanwijzer naar de buffer met gewone gegevens die zijn opgehaald uit het CInternetFile-object . Ongeacht het gegevenstype van de buffer die aan deze methode wordt doorgegeven, worden er geen bewerkingen uitgevoerd op de gegevens (bijvoorbeeld conversie naar Unicode), dus u moet de geretourneerde gegevens toewijzen aan de structuur die u verwacht, alsof het void* type is geretourneerd.

NULL als het einde van het bestand is bereikt zonder gegevens te lezen; of, als booleaanse waarde ONWAAR is als het einde van het bestand is bereikt zonder gegevens te lezen.

Opmerkingen

De functie plaatst de resulterende regel in het geheugen waarnaar wordt verwezen door de pstr-parameter . Hiermee worden tekens niet meer gelezen wanneer het maximum aantal tekens wordt bereikt, opgegeven door nMax. De buffer ontvangt altijd een afsluit null-teken.

Als u belt zonder eerst SetReadBufferSize aan te roepenReadString, krijgt u een buffer van 4096 bytes.

CInternetFile::Seek

Roep deze lidfunctie aan om de aanwijzer in een eerder geopend bestand te verplaatsen.

virtual ULONGLONG Seek(
    LONGLONG lOffset,
    UINT nFrom);

Parameterwaarden

lOffset
Verschuiving in bytes om de aanwijzer voor lezen/schrijven in het bestand te verplaatsen.

nVan
Relatieve verwijzing voor de offset. Moet een van de volgende waarden zijn:

  • CFile::begin Verplaats de bestandsaanwijzer lOff-bytes vanaf het begin van het bestand.

  • CFile::current Verplaats de bestandsaanwijzer lOff-bytes van de huidige positie in het bestand.

  • CFile::end Verplaats de bestandspointer lOff-bytes vanaf het einde van het bestand. LOff moet negatief zijn om naar het bestaande bestand te zoeken; positieve waarden zoeken voorbij het einde van het bestand.

Retourwaarde

De nieuwe byte offset vanaf het begin van het bestand als de aangevraagde positie juridisch is; anders is de waarde niet gedefinieerd en wordt er een CInternetException-object gegenereerd.

Opmerkingen

De Seek functie staat willekeurige toegang tot de inhoud van een bestand toe door de aanwijzer een opgegeven hoeveelheid, absoluut of relatief, te verplaatsen. Er worden tijdens het zoeken geen gegevens gelezen.

Op dit moment wordt een aanroep van deze lidfunctie alleen ondersteund voor gegevens die zijn gekoppeld aan CHttpFile objecten. Het wordt niet ondersteund voor FTP- of gopher-aanvragen. Als u een van deze niet-ondersteunde services aanroept Seek , wordt u teruggegeven aan de Win32-foutcode ERROR_INTERNET_INVALID_OPERATION.

Wanneer een bestand wordt geopend, bevindt de bestandsaanwijzer zich op offset 0, het begin van het bestand.

Opmerking

Het gebruik Seek kan leiden tot een impliciete aanroep van Flush.

Example

Zie het voorbeeld voor de basisklasse-implementatie ( CFile::Seek).

CInternetFile::SetReadBufferSize

Roep deze lidfunctie aan om de grootte van de tijdelijke leesbuffer in te stellen die wordt gebruikt door een CInternetFile-afgeleide object.

BOOL SetReadBufferSize(UINT nReadSize);

Parameterwaarden

nReadSize
De gewenste buffergrootte in bytes.

Retourwaarde

Niet-nul indien geslaagd; anders 0. Als de aanroep mislukt, kan de Win32-functie GetLastError worden aangeroepen om de oorzaak van de fout te bepalen.

Opmerkingen

De onderliggende WinInet-API's voeren geen buffering uit, dus kies een buffergrootte waarmee uw toepassing gegevens efficiënt kan lezen, ongeacht de hoeveelheid gegevens die moet worden gelezen. Als elke aanroep naar Lezen normaal gesproken een grote hoeveelheid gegevens omvat (bijvoorbeeld vier of meer kilobytes), hebt u geen buffer nodig. Als u echter aanroept Read om kleine segmenten gegevens te krijgen, of als u ReadString gebruikt om afzonderlijke regels tegelijk te lezen, verbetert een leesbuffer de prestaties van de toepassing.

Standaard biedt een CInternetFile object geen buffering voor lezen. Als u deze lidfunctie aanroept, moet u ervoor zorgen dat het bestand is geopend voor leestoegang.

U kunt de buffergrootte op elk gewenst moment vergroten, maar het verkleinen van de buffer heeft geen effect. Als u ReadString aanroept zonder eerst aan te roepen SetReadBufferSize, krijgt u een buffer van 4096 bytes.

CInternetFile::SetWriteBufferSize

Roep deze lidfunctie aan om de grootte van de tijdelijke schrijfbuffer in te stellen die wordt gebruikt door een CInternetFile-afgeleide object.

BOOL SetWriteBufferSize(UINT nWriteSize);

Parameterwaarden

nWriteSize
De grootte van de buffer in bytes.

Retourwaarde

Niet-nul indien geslaagd; anders 0. Als de aanroep mislukt, kan de Win32-functie GetLastError worden aangeroepen om de oorzaak van de fout te bepalen.

Opmerkingen

De onderliggende WinInet-API's voeren geen buffering uit, dus kies een buffergrootte waarmee uw toepassing efficiënt gegevens kan schrijven, ongeacht de hoeveelheid gegevens die moet worden geschreven. Als elke aanroep naar Schrijven normaal gesproken een grote hoeveelheid gegevens omvat (bijvoorbeeld vier of meer kilobytes tegelijk), hebt u geen buffer nodig. Als u Write echter aanroept om kleine stukken gegevens te schrijven, verbetert een schrijfbuffer de prestaties van uw toepassing.

Standaard biedt een CInternetFile object geen buffering voor schrijven. Als u deze lidfunctie aanroept, moet u ervoor zorgen dat het bestand is geopend voor schrijftoegang. U kunt de grootte van de schrijfbuffer op elk gewenst moment wijzigen, maar dit veroorzaakt een impliciete aanroep naar Leegmaken.

CInternetFile::Write

Roep deze lidfunctie aan om te schrijven naar het opgegeven geheugen, lpvBuf, het opgegeven aantal bytes, nCount.

virtual void Write(
    const void* lpBuf,
    UINT nCount);

Parameterwaarden

lpBuf
Een aanwijzer naar de eerste byte die moet worden geschreven.

nCount
Hiermee geeft u het aantal bytes dat moet worden geschreven.

Opmerkingen

Als er een fout optreedt tijdens het schrijven van de gegevens, genereert de functie een CInternetException-object waarin de fout wordt beschreven.

CInternetFile::WriteString

Met deze functie wordt een tekenreeks met null-beëindiging naar het bijbehorende bestand geschreven.

virtual void WriteString(LPCTSTR pstr);

Parameterwaarden

pstr
Een aanwijzer naar een tekenreeks die de inhoud bevat die moet worden geschreven.

Opmerkingen

Als er een fout optreedt tijdens het schrijven van de gegevens, genereert de functie een CInternetException-object waarin de fout wordt beschreven.

Zie ook

CStdioFile-klasse
Hiërarchiegrafiek
CInternetConnection-klasse