Classe CInternetFile
Consente l'accesso ai file nei sistemi remoti che usano protocolli Internet.
Sintassi
class CInternetFile : public CStdioFile
Membri
Costruttori protetti
Nome | Descrizione |
---|---|
CInternetFile::CInternetFile | Costruisce un oggetto CInternetFile . |
Metodi pubblici
Nome | Descrizione |
---|---|
CInternetFile::Abort | Chiude il file ignorando tutti gli avvisi e gli errori. |
CInternetFile::Close | Chiude un oggetto CInternetFile e libera le relative risorse. |
CInternetFile::Flush | Scarica il contenuto del buffer di scrittura e verifica che i dati in memoria vengano scritti nel computer di destinazione. |
CInternetFile::GetLength | Restituisce le dimensioni del file. |
CInternetFile::Read | Legge il numero di byte specificati. |
CInternetFile::ReadString | Legge un flusso di caratteri. |
CInternetFile::Seek | Riposiziona il puntatore in un file aperto. |
CInternetFile::SetReadBufferSize | Imposta le dimensioni del buffer in cui verranno letti i dati. |
CInternetFile::SetWriteBufferSize | Imposta le dimensioni del buffer in cui verranno scritti i dati. |
CInternetFile::Write | Scrive il numero di byte specificati. |
CInternetFile::WriteString | Scrive una stringa con terminazione Null in un file. |
Operatori pubblici
Nome | Descrizione |
---|---|
CInternetFile::operator HINTERNET | Operatore di cast per un handle Internet. |
Membri dati protetti
Nome | Descrizione |
---|---|
CInternetFile::m_hFile | Handle di un file. |
Osservazioni:
Fornisce una classe di base per le classi di file CHttpFile e CGopherFile . Non si crea mai direttamente un CInternetFile
oggetto. Creare invece un oggetto di una delle classi derivate chiamando CGopherConnection::OpenFile o CHttpConnection::OpenRequest. È anche possibile creare un CInternetFile
oggetto chiamando CFtpConnection::OpenFile.
Le CInternetFile
funzioni Open
membro , LockRange
, UnlockRange
e Duplicate
non vengono implementate per CInternetFile
. Se si chiamano queste funzioni su un CInternetFile
oggetto, si otterrà un'eccezione CNotSupportedException.
Per altre informazioni sul CInternetFile
funzionamento delle altre classi Internet MFC, vedere l'articolo Programmazione Internet con WinInet.
Gerarchia di ereditarietà
CInternetFile
Requisiti
Intestazione: afxinet.h
CInternetFile::Abort
Chiude il file associato a questo oggetto e rende il file non disponibile per la lettura o la scrittura.
virtual void Abort();
Osservazioni:
Se il file non è stato chiuso prima di eliminare l'oggetto, il distruttore lo chiude per l'utente.
Quando si gestiscono le eccezioni, Abort
differisce da Close in due modi importanti. In primo luogo, la Abort
funzione non genera un'eccezione in caso di errori perché ignora gli errori. In secondo luogo, Abort
non ASSERT se il file non è stato aperto o è stato chiuso in precedenza.
CInternetFile::CInternetFile
Questa funzione membro viene chiamata quando viene creato un CInternetFile
oggetto .
CInternetFile(
HINTERNET hFile,
LPCTSTR pstrFileName,
CInternetConnection* pConnection,
BOOL bReadMode);
CInternetFile(
HINTERNET hFile,
HINTERNET hSession,
LPCTSTR pstrFileName,
LPCTSTR pstrServer,
DWORD_PTR dwContext,
BOOL bReadMode);
Parametri
hFile
Handle per un file Internet.
pstrFileName
Puntatore a una stringa contenente il nome del file.
pConnection
Puntatore a un oggetto CInternetConnection .
bReadMode
Indica se il file è di sola lettura.
hSession
Handle per una sessione Internet.
pstrServer
Puntatore a una stringa contenente il nome del server.
dwContext
Identificatore di contesto per l'oggetto CInternetFile
. Per altre informazioni sull'identificatore di contesto, vedere Nozioni di base su WinInet.
Osservazioni:
Non si crea mai direttamente un CInternetFile
oggetto. Creare invece un oggetto di una delle classi derivate chiamando CGopherConnection::OpenFile o CHttpConnection::OpenRequest. È anche possibile creare un CInternetFile
oggetto chiamando CFtpConnection::OpenFile.
CInternetFile::Close
Chiude un oggetto CInternetFile
e libera una delle relative risorse.
virtual void Close();
Osservazioni:
Se il file è stato aperto per la scrittura, esiste una chiamata implicita a Flush per garantire che tutti i dati memorizzati nel buffer vengano scritti nell'host. È consigliabile chiamare Close
al termine dell'utilizzo di un file.
CInternetFile::Flush
Chiamare questa funzione membro per scaricare il contenuto del buffer di scrittura.
virtual void Flush();
Osservazioni:
Usare Flush
per garantire che tutti i dati in memoria siano stati effettivamente scritti nel computer di destinazione e per garantire che la transazione con il computer host sia stata completata. Flush
è efficace solo per CInternetFile
gli oggetti aperti per la scrittura.
CInternetFile::GetLength
Restituisce le dimensioni del file.
virtual ULONGLONG GetLength() const;
CInternetFile::m_hFile
Handle per il file associato a questo oggetto.
HINTERNET m_hFile;
CInternetFile::operator HINTERNET
Utilizzare questo operatore per ottenere l'handle di Windows per la sessione Internet corrente.
operator HINTERNET() const;
CInternetFile::Read
Chiamare questa funzione membro per leggere nella memoria specificata, a partire da lpvBuf, il numero specificato di byte, nCount.
virtual UINT Read(
void* lpBuf,
UINT nCount);
Parametri
lpBuf
Puntatore a un indirizzo di memoria in cui vengono letti i dati del file.
nCount
Numero di byte da scrivere.
Valore restituito
Numero di byte trasferiti nel buffer. Il valore restituito può essere minore di nCount se è stata raggiunta la fine del file.
Osservazioni:
La funzione restituisce il numero di byte effettivamente letti, ovvero un numero che può essere minore di nCount se termina il file. Se si verifica un errore durante la lettura del file, la funzione genera un oggetto CInternetException che descrive l'errore. Si noti che la lettura oltre la fine del file non viene considerata un errore e pertanto non verrà generata alcuna eccezione.
Per assicurarsi che tutti i dati vengano recuperati, un'applicazione deve continuare a chiamare il CInternetFile::Read
metodo fino a quando il metodo non restituisce zero.
CInternetFile::ReadString
Chiamare questa funzione membro per leggere un flusso di caratteri fino a quando non trova un carattere di nuova riga.
virtual BOOL ReadString(CString& rString);
virtual LPTSTR ReadString(
LPTSTR pstr,
UINT nMax);
Parametri
pstr
Puntatore a una stringa che riceverà la riga da leggere.
nMax
Numero massimo di caratteri da leggere.
rString
Riferimento all'oggetto CString che riceve la riga di lettura.
Valore restituito
Puntatore al buffer contenente dati semplici recuperati dall'oggetto CInternetFile . Indipendentemente dal tipo di dati del buffer passato a questo metodo, non esegue alcuna manipolazione sui dati ,ad esempio la conversione in Unicode, quindi è necessario eseguire il mapping dei dati restituiti alla struttura prevista, come se fosse stato restituito il void
* tipo.
NULL se la fine del file è stata raggiunta senza leggere dati; oppure, se booleano, FALSE se è stata raggiunta la fine del file senza leggere alcun dato.
Osservazioni:
La funzione inserisce la riga risultante nella memoria a cui fa riferimento il parametro pstr . Interrompe la lettura dei caratteri quando raggiunge il numero massimo di caratteri, specificato da nMax. Il buffer riceve sempre un carattere Null di terminazione.
Se si chiama senza prima chiamare ReadString
SetReadBufferSize, si otterrà un buffer di 4096 byte.
CInternetFile::Seek
Chiamare questa funzione membro per riposizionare il puntatore in un file aperto in precedenza.
virtual ULONGLONG Seek(
LONGLONG lOffset,
UINT nFrom);
Parametri
lOffset
Offset in byte per spostare il puntatore di lettura/scrittura nel file.
nFrom
Riferimento relativo per l'offset. Deve essere uno dei valori seguenti:
CFile::begin
Spostare il puntatore del file lOff in avanti dall'inizio del file.CFile::current
Spostare il puntatore del file lOff byte dalla posizione corrente nel file.CFile::end
Spostare il puntatore del file lOff byte dalla fine del file. LOff deve essere negativo per eseguire la ricerca nel file esistente. I valori positivi cercheranno oltre la fine del file.
Valore restituito
Il nuovo offset di byte dall'inizio del file se la posizione richiesta è legale; in caso contrario, il valore non è definito e viene generato un oggetto CInternetException .
Osservazioni:
La Seek
funzione consente l'accesso casuale al contenuto di un file spostando il puntatore di una quantità specificata, assolutamente o relativamente. Nessun dato viene effettivamente letto durante la ricerca.
Al momento, una chiamata a questa funzione membro è supportata solo per i dati associati agli CHttpFile
oggetti . Non è supportato per le richieste FTP o gopher. Se chiami Seek
uno di questi servizi non supportati, passerà di nuovo al codice di errore Win32 ERROR_INTERNET_INVALID_OPERATION.
Quando un file viene aperto, il puntatore del file è in corrispondenza dell'offset 0, l'inizio del file.
Nota
L'uso Seek
di può causare una chiamata implicita a Flush.
Esempio
Vedere l'esempio per l'implementazione della classe base ( CFile::Seek).
CInternetFile::SetReadBufferSize
Chiamare questa funzione membro per impostare le dimensioni del buffer di lettura temporaneo usato da un CInternetFile
oggetto derivato da .
BOOL SetReadBufferSize(UINT nReadSize);
Parametri
nReadSize
Dimensione desiderata del buffer in byte.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0. Se la chiamata non riesce, è possibile chiamare la funzione Win32 GetLastError per determinare la causa dell'errore.
Osservazioni:
Le API WinInet sottostanti non eseguono il buffering, quindi scegliere una dimensione del buffer che consente all'applicazione di leggere i dati in modo efficiente, indipendentemente dalla quantità di dati da leggere. Se ogni chiamata a Read normalmente comporta una grande zia di dati (ad esempio, quattro o più kilobyte), non è necessario un buffer. Tuttavia, se si chiama Read
per ottenere piccoli blocchi di dati o se si usa ReadString per leggere singole righe alla volta, un buffer di lettura migliora le prestazioni dell'applicazione.
Per impostazione predefinita, un CInternetFile
oggetto non fornisce alcun buffer per la lettura. Se si chiama questa funzione membro, è necessario assicurarsi che il file sia stato aperto per l'accesso in lettura.
È possibile aumentare le dimensioni del buffer in qualsiasi momento, ma la compattazione del buffer non avrà alcun effetto. Se si chiama ReadString senza prima chiamare SetReadBufferSize
, si otterrà un buffer di 4096 byte.
CInternetFile::SetWriteBufferSize
Chiamare questa funzione membro per impostare le dimensioni del buffer di scrittura temporaneo usato da un CInternetFile
oggetto derivato da .
BOOL SetWriteBufferSize(UINT nWriteSize);
Parametri
nWriteSize
Dimensioni del buffer in byte.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0. Se la chiamata non riesce, è possibile chiamare la funzione Win32 GetLastError per determinare la causa dell'errore.
Osservazioni:
Le API WinInet sottostanti non eseguono il buffering, quindi scegliere una dimensione del buffer che consente all'applicazione di scrivere dati in modo efficiente indipendentemente dalla quantità di dati da scrivere. Se ogni chiamata a Scrittura comporta normalmente una grande quantità di dati (ad esempio, quattro o più kilobyte alla volta), non è necessario un buffer. Tuttavia, se si chiama Write per scrivere piccoli blocchi di dati, un buffer di scrittura migliora le prestazioni dell'applicazione.
Per impostazione predefinita, un CInternetFile
oggetto non fornisce alcun buffer per la scrittura. Se si chiama questa funzione membro, è necessario assicurarsi che il file sia stato aperto per l'accesso in scrittura. È possibile modificare le dimensioni del buffer di scrittura in qualsiasi momento, ma in questo modo viene eseguita una chiamata implicita a Flush.
CInternetFile::Write
Chiamare questa funzione membro per scrivere nella memoria specificata, lpvBuf, nel numero specificato di byte, nCount.
virtual void Write(
const void* lpBuf,
UINT nCount);
Parametri
lpBuf
Puntatore al primo byte da scrivere.
nCount
Specifica il numero di byte da scrivere.
Osservazioni:
Se si verifica un errore durante la scrittura dei dati, la funzione genera un oggetto CInternetException che descrive l'errore.
CInternetFile::WriteString
Questa funzione scrive una stringa con terminazione Null nel file associato.
virtual void WriteString(LPCTSTR pstr);
Parametri
pstr
Puntatore a una stringa contenente il contenuto da scrivere.
Osservazioni:
Se si verifica un errore durante la scrittura dei dati, la funzione genera un oggetto CInternetException che descrive l'errore.
Vedi anche
Classe CStdioFile
Grafico della gerarchia
Classe CInternetConnection