Sdílet prostřednictvím


CInternetFile – třída

Umožňuje přístup k souborům ve vzdálených systémech, které používají internetové protokoly.

Syntaxe

class CInternetFile : public CStdioFile

Členové

Chráněné konstruktory

Název Popis
CInternetFile::CInternetFile CInternetFile Vytvoří objekt.

Veřejné metody

Název Popis
CInternetFile::Abort Zavře soubor a ignoruje všechna upozornění a chyby.
CInternetFile::Close CInternetFile Zavře a uvolní své prostředky.
CInternetFile::Flush Vyprázdní obsah vyrovnávací paměti zápisu a zajistí zápis dat v paměti do cílového počítače.
CInternetFile::GetLength Vrátí velikost souboru.
CInternetFile::Read Přečte počet zadaných bajtů.
CInternetFile::ReadString Přečte datový proud znaků.
CInternetFile::Seek Změní umístění ukazatele do otevřeného souboru.
CInternetFile::SetReadBufferSize Nastaví velikost vyrovnávací paměti, ve které se budou číst data.
CInternetFile::SetWriteBufferSize Nastaví velikost vyrovnávací paměti, do které se budou zapisovat data.
CInternetFile::Write Zapíše počet zadaných bajtů.
CInternetFile::WriteString Zapíše řetězec ukončený hodnotou null do souboru.

Veřejné operátory

Název Popis
CInternetFile::operator HINTERNET Operátor přetypování pro internetový popisovač.

Chráněné datové členy

Název Popis
CInternetFile::m_hFile Popisovač souboru.

Poznámky

Poskytuje základní třídu pro třídy souborů CHttpFile a CGopherFile . Nikdy nevytvoříte CInternetFile objekt přímo. Místo toho vytvořte objekt jedné z jeho odvozených tříd voláníM CGopherConnection::OpenFile nebo CHttpConnection::OpenRequest. Objekt můžete vytvořit CInternetFile také voláním CFtpConnection::OpenFile.

Členské CInternetFile funkce Open, LockRange, UnlockRangea Duplicate nejsou implementovány pro CInternetFile. Pokud tyto funkce voláte u objektu CInternetFile , získáte CNotSupportedException.

Další informace o tom, jak CInternetFile funguje s ostatními internetovými třídami MFC, najdete v článku Internetové programování pomocí winInetu.

Hierarchie dědičnosti

Objekt CObject

CFile

CStdioFile

CInternetFile

Požadavky

Hlavička: afxinet.h

CInternetFile::Abort

Zavře soubor přidružený k tomuto objektu a znepřístupní soubor pro čtení nebo zápis.

virtual void Abort();

Poznámky

Pokud jste soubor ještě před zničením objektu nezavřeli, destruktor ho za vás zavře.

Při zpracovánívýjimekch Abort Nejprve funkce Abort nevyvolá výjimku při selhání, protože ignoruje selhání. Za druhé, ne ASSERT, Abort pokud soubor nebyl otevřen nebo byl zavřený dříve.

CInternetFile::CInternetFile

Tato členová funkce je volána při vytvoření objektu CInternetFile .

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

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

Parametry

hFile
Popisovač internetového souboru.

pstrFileName
Ukazatel na řetězec obsahující název souboru.

pConnection
Ukazatel na objekt CInternetConnection .

bReadMode
Určuje, jestli je soubor jen pro čtení.

hSession
Popisovač internetové relace.

pstrServer
Ukazatel na řetězec obsahující název serveru.

dwContext
Identifikátor kontextu objektu CInternetFile . Další informace o identifikátoru kontextu najdete v tématu Základy winInetu.

Poznámky

Nikdy nevytvoříte CInternetFile objekt přímo. Místo toho vytvořte objekt jedné z jeho odvozených tříd voláníM CGopherConnection::OpenFile nebo CHttpConnection::OpenRequest. Objekt můžete vytvořit CInternetFile také voláním CFtpConnection::OpenFile.

CInternetFile::Close

CInternetFile Zavře a uvolní všechny jeho prostředky.

virtual void Close();

Poznámky

Pokud byl soubor otevřen pro zápis, existuje implicitní volání Flush , aby se zajistilo, že se všechna data uložená do vyrovnávací paměti zapisují do hostitele. Až budete hotovi, měli byste zavolat Close pomocí souboru.

CInternetFile::Flush

Voláním této členské funkce vyprázdníte obsah vyrovnávací paměti zápisu.

virtual void Flush();

Poznámky

Slouží Flush k zajištění toho, aby všechna data v paměti byla skutečně zapsána do cílového počítače a aby se zajistilo, že vaše transakce s hostitelským počítačem byla dokončena. Flush je efektivní pouze u CInternetFile objektů otevřených pro zápis.

CInternetFile::GetLength

Vrátí velikost souboru.

virtual ULONGLONG GetLength() const;

CInternetFile::m_hFile

Popisovač souboru přidruženého k tomuto objektu.

HINTERNET m_hFile;

CInternetFile::operator HINTERNET

Pomocí tohoto operátoru získáte popisovač Windows pro aktuální internet relaci.

operator HINTERNET() const;

CInternetFile::Read

Voláním této členské funkce načtěte do dané paměti, počínaje lpvBuf, zadaný počet bajtů, nCount.

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

Parametry

lpBuf
Ukazatel na adresu paměti, na kterou se čtou data souboru.

nCount
Počet bajtů, které se mají zapsat.

Návratová hodnota

Počet bajtů přenesených do vyrovnávací paměti. Vrácená hodnota může být menší než nCount , pokud byl dosažen konec souboru.

Poznámky

Funkce vrátí počet bajtů, které jsou skutečně přečteny – číslo, které může být menší než nCount , pokud soubor končí. Pokud při čtení souboru dojde k chybě, funkce vyvolá CInternetException objekt, který popisuje chybu. Všimněte si, že čtení za koncem souboru se nepovažuje za chybu a nebude vyvolán žádná výjimka.

Aby se zajistilo, že se načtou všechna data, musí aplikace pokračovat v volání CInternetFile::Read metody, dokud metoda nevrátí nulu.

CInternetFile::ReadString

Voláním této členské funkce přečtete datový proud znaků, dokud nenajde znak nového řádku.

virtual BOOL ReadString(CString& rString);

virtual LPTSTR ReadString(
    LPTSTR pstr,
    UINT nMax);

Parametry

pstr
Ukazatel na řetězec, který obdrží čtený řádek.

nMax
Maximální počet znaků, které se mají přečíst.

rString
Odkaz na CString objekt, který přijímá čtecí řádek.

Návratová hodnota

Ukazatel na vyrovnávací paměť obsahující prosté data načtená z objektu CInternetFile . Bez ohledu na datový typ vyrovnávací paměti předané této metodě neprovádí žádné manipulace s daty (například převod na Unicode), takže je nutné namapovat vrácená data na strukturu, kterou očekáváte, jako kdyby void * byl vrácen typ.

Hodnota NULL, pokud bylo dosaženo konce souboru bez čtení dat; nebo pokud byla dosažena logická hodnota NEPRAVDA, pokud byl dosažen konec souboru bez čtení dat.

Poznámky

Funkce umístí výslednou čáru do paměti, na kterou odkazuje parametr pstr . Když dosáhne maximálního počtu znaků určených hodnotou nMax, přestane číst znaky. Vyrovnávací paměť vždy obdrží ukončující znak null.

Pokud voláte ReadString bez prvního volání SetReadBufferSize, získáte vyrovnávací paměť 4096 bajtů.

CInternetFile::Seek

Voláním této členské funkce přeložíte ukazatel do dříve otevřeného souboru.

virtual ULONGLONG Seek(
    LONGLONG lOffset,
    UINT nFrom);

Parametry

LOffset
Posunem v bajtech přesuňte ukazatel pro čtení a zápis v souboru.

nFrom
Relativní odkaz na posun. Toto musí být jedna z následujících hodnot:

  • CFile::begin Přesuňte ukazatel souboru lOff bajty vpřed od začátku souboru.

  • CFile::current Přesuňte ukazatel souboru lOff bajty z aktuální pozice v souboru.

  • CFile::end Přesuňte ukazatel souboru lOff bajty z konce souboru. LOff musí být negativní, aby se hledal do existujícího souboru. Kladné hodnoty budou hledat za koncem souboru.

Návratová hodnota

Nový bajt posun od začátku souboru, pokud je požadovaná pozice legální; v opačném případě je hodnota nedefinována a CInternetException objekt je vyvolána.

Poznámky

Funkce Seek umožňuje náhodný přístup k obsahu souboru přesunutím ukazatele na zadanou částku, absolutně nebo relativně. Během hledání se ve skutečnosti nečtou žádná data.

V tuto chvíli je volání této členské funkce podporováno pouze pro data přidružená k objektům CHttpFile . Nepodporuje se pro požadavky FTP ani gopher. Pokud voláte Seek jednu z těchto nepodporovaných služeb, předá vám zpět kód chyby Win32 ERROR_INTERNET_INVALID_OPERATION.

Když je soubor otevřen, ukazatel souboru je na posunu 0, začátek souboru.

Poznámka:

Použití Seek může způsobit implicitní volání vyprázdnění.

Příklad

Podívejte se na příklad implementace základní třídy ( CFile::Seek).

CInternetFile::SetReadBufferSize

Voláním této členské funkce nastavíte velikost dočasné vyrovnávací paměti pro čtení používanou odvozeným objektem CInternetFile.

BOOL SetReadBufferSize(UINT nReadSize);

Parametry

nReadSize
Požadovaná velikost vyrovnávací paměti v bajtech.

Návratová hodnota

Nenulové, pokud je úspěšné; jinak 0. Pokud volání selže, může být volána funkce Win32 GetLastError k určení příčiny chyby.

Poznámky

Základní rozhraní API wininetu neprovádějí ukládání do vyrovnávací paměti, takže zvolte velikost vyrovnávací paměti, která vaší aplikaci umožňuje efektivně číst data bez ohledu na množství dat, která se mají číst. Pokud každé volání read obvykle zahrnuje velkou tetu dat (například čtyři nebo více kilobajtů), neměli byste potřebovat vyrovnávací paměť. Pokud však voláte Read , abyste získali malé bloky dat, nebo pokud používáte ReadString ke čtení jednotlivých řádků najednou, vyrovnávací paměť pro čtení zlepšuje výkon aplikace.

Ve výchozím nastavení CInternetFile objekt neposkytuje žádné ukládání do vyrovnávací paměti pro čtení. Pokud zavoláte tuto členovu funkci, musíte mít jistotu, že byl soubor otevřen pro přístup pro čtení.

Velikost vyrovnávací paměti můžete kdykoli zvětšit, ale zmenšení vyrovnávací paměti nebude mít žádný vliv. Pokud voláte ReadString bez prvního volání SetReadBufferSize, získáte vyrovnávací paměť 4096 bajtů.

CInternetFile::SetWriteBufferSize

Voláním této členské funkce nastavíte velikost dočasné vyrovnávací paměti pro zápis, kterou CInternetFilepoužívá -odvozený objekt.

BOOL SetWriteBufferSize(UINT nWriteSize);

Parametry

nWriteSize
Velikost vyrovnávací paměti v bajtech.

Návratová hodnota

Nenulové, pokud je úspěšné; jinak 0. Pokud volání selže, může být volána funkce Win32 GetLastError k určení příčiny chyby.

Poznámky

Základní rozhraní API WinInet neprovádějí ukládání do vyrovnávací paměti, takže zvolte velikost vyrovnávací paměti, která vaší aplikaci umožňuje efektivně zapisovat data bez ohledu na množství dat, která se mají zapsat. Pokud každé volání zápisu obvykle zahrnuje velké množství dat (například čtyři nebo více kilobajtů najednou), neměli byste potřebovat vyrovnávací paměť. Pokud však zavoláte zápis pro zápis malých bloků dat, vyrovnávací paměť zápisu zlepší výkon aplikace.

Ve výchozím nastavení CInternetFile objekt neposkytuje žádné ukládání do vyrovnávací paměti pro zápis. Pokud zavoláte tuto členovu funkci, musíte mít jistotu, že byl soubor otevřen pro přístup k zápisu. Velikost vyrovnávací paměti zápisu můžete kdykoli změnit, ale to způsobí implicitní volání flush.

CInternetFile::Write

Voláním této členské funkce zapíšete do dané paměti lpvBuf, zadaného počtu bajtů, nCount.

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

Parametry

lpBuf
Ukazatel na první bajt, který se má zapsat.

nCount
Určuje počet bajtů, které se mají zapsat.

Poznámky

Pokud při zápisu dat dojde k nějaké chybě, funkce vyvolá objekt CInternetException popisující chybu.

CInternetFile::WriteString

Tato funkce zapíše řetězec ukončený hodnotou null do přidruženého souboru.

virtual void WriteString(LPCTSTR pstr);

Parametry

pstr
Ukazatel na řetězec obsahující obsah, který se má zapsat.

Poznámky

Pokud při zápisu dat dojde k nějaké chybě, funkce vyvolá objekt CInternetException popisující chybu.

Viz také

CStdioFile – třída
Graf hierarchie
CInternetConnection – třída