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
, UnlockRange
a 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
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 CInternetFile
použí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