Condividi tramite


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 Openmembro , LockRange, UnlockRangee 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à

CObject

CFile

CStdioFile

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 CInternetFileoggetto 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 CInternetFileoggetto 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