次の方法で共有


CInternetFile クラス

インターネット プロトコルを使用するリモート システム上のファイルへのアクセスを許可します。

構文

class CInternetFile : public CStdioFile

メンバー

保護されたコンストラクター

名前 説明
CInternetFile::CInternetFile CInternetFile オブジェクトを構築します。

パブリック メソッド

名前 説明
CInternetFile::Abort すべての警告とエラーを無視して、ファイルを閉じます。
CInternetFile::Close CInternetFileを閉じ、そのリソースを解放します。
CInternetFile::Flush 書き込みバッファーの内容をフラッシュし、メモリ内のデータがターゲット コンピューターに書き込まれることを確認します。
CInternetFile::GetLength ファイルのサイズを返します。
CInternetFile::Read 指定したバイト数を読み取ります。
CInternetFile::ReadString 文字のストリームを読み取ります。
CInternetFile::Seek 開いているファイル内のポインターの位置を変更します。
CInternetFile::SetReadBufferSize データを読み取るバッファーのサイズを設定します。
CInternetFile::SetWriteBufferSize データが書き込まれるバッファーのサイズを設定します。
CInternetFile::Write 指定したバイト数を書き込みます。
CInternetFile::WriteString null で終わる文字列をファイルに書き込みます。

パブリック演算子

名前 説明
CInternetFile::operator HINTERNET インターネット ハンドルのキャスト演算子。

プロテクト データ メンバー

名前 説明
CInternetFile::m_hFile ファイルへのハンドル。

解説

CHttpFile および CGopherFile ファイル クラスの基本クラスを提供します。 CInternetFile オブジェクトを直接作成することはありません。 代わりに、 CGopherConnection::OpenFile または CHttpConnection::OpenRequest を呼び出して、派生クラスのいずれかのオブジェクトを作成します。 CFtpConnection::OpenFile を呼び出して、CInternetFile オブジェクトを作成することもできます。

CInternetFileメンバー関数OpenLockRangeUnlockRange、およびDuplicateは、CInternetFile用に実装されていません。 CInternetFile オブジェクトでこれらの関数を呼び出すと、CNotSupportedExceptionが取得されます。

他の MFC インターネット クラスと連携 CInternetFile 方法の詳細については、「WinInet を使用したInternet プログラミング 」の記事を参照してください

継承階層

CObject

CFile

CStdioFile

CInternetFile

要件

Header: afxinet.h

CInternetFile::Abort

このオブジェクトに関連付けられているファイルを閉じ、ファイルを読み取りまたは書き込みに使用できないようにします。

virtual void Abort();

解説

オブジェクトを破棄する前にファイルを閉じていない場合は、デストラクターによって閉じられます。

例外を処理する場合、 AbortClose と 2 つの重要な点で異なります。 まず、 Abort 関数はエラーを無視するため、エラー時に例外をスローしません。 次に、Abortは、ファイルが以前に開かれていたり閉じられたりしていない場合ASSERT をしません。

CInternetFile::CInternetFile

このメンバー関数は、CInternetFile オブジェクトの作成時に呼び出されます。

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

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

パラメーター

hFile
インターネット ファイルへのハンドル。

pstrFileName
ファイル名を含む文字列へのポインター。

pConnection
CInternetConnection オブジェクトへのポインター。

bReadMode
ファイルが読み取り専用かどうかを示します。

hSession
インターネット セッションへのハンドル。

pstrServer
サーバーの名前を含む文字列へのポインター。

dwContext
CInternetFile オブジェクトのコンテキスト識別子。 コンテキスト識別子の詳細については、「 WinInet の基本 を参照してください。

解説

CInternetFile オブジェクトを直接作成することはありません。 代わりに、 CGopherConnection::OpenFile または CHttpConnection::OpenRequest を呼び出して、派生クラスのいずれかのオブジェクトを作成します。 CFtpConnection::OpenFile を呼び出して、CInternetFile オブジェクトを作成することもできます。

CInternetFile::Close

CInternetFileを閉じ、そのリソースを解放します。

virtual void Close();

解説

ファイルが書き込み用に開かれた場合、バッファー内のすべてのデータがホストに確実に書き込まれるよう、 Flush への暗黙的な呼び出しがあります。 ファイルの使用が完了したら、 Close を呼び出す必要があります。

CInternetFile::Flush

このメンバー関数を呼び出して、書き込みバッファーの内容をフラッシュします。

virtual void Flush();

解説

Flushを使用して、メモリ内のすべてのデータがターゲット コンピューターに実際に書き込まれたことを確認し、ホスト コンピューターとのトランザクションが完了したことを確認します。 Flush は、書き込み用に開かれた CInternetFile オブジェクトでのみ有効です。

CInternetFile::GetLength

ファイルのサイズを返します。

virtual ULONGLONG GetLength() const;

CInternetFile::m_hFile

このオブジェクトに関連付けられているファイルへのハンドル。

HINTERNET m_hFile;

CInternetFile::operator HINTERNET

この演算子を使用して、現在のインターネット セッションの Windows ハンドルを取得します。

operator HINTERNET() const;

CInternetFile::Read

このメンバー関数を呼び出して、指定されたメモリを読み取ります。指定したバイト数である lpvBuf から始まり、 nCount

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

パラメーター

lpBuf
ファイル データを読み込むメモリ アドレスへのポインター。

nCount
書き込むバイト数。

戻り値

バッファーに転送するバイト数。 ファイルの末尾に達した場合、戻り値は nCount 未満になる可能性があります。

解説

この関数は、実際に読み取られたバイト数を返します。ファイルが終了した場合nCount 未満になる可能性があります。 ファイルの読み取り中にエラーが発生した場合、この関数はエラーを説明する CInternetException オブジェクトをスローします。 ファイルの末尾を越える読み取りはエラーとは見なされず、例外がスローされないことに注意してください。

すべてのデータが確実に取得されるようにするには、メソッドが 0 を返すまで、アプリケーションは引き続き CInternetFile::Read メソッドを呼び出す必要があります。

CInternetFile::ReadString

改行文字が見つかるまで、このメンバー関数を呼び出して文字のストリームを読み取ります。

virtual BOOL ReadString(CString& rString);

virtual LPTSTR ReadString(
    LPTSTR pstr,
    UINT nMax);

パラメーター

pstr
読み取られる行を受け取る文字列へのポインター。

nMax
読み取る最大文字数。

rString
読み取り行を受け取る CString オブジェクトへの参照。

戻り値

CInternetFile オブジェクトから取得されたプレーン データを含むバッファーへのポインター。 このメソッドに渡されるバッファーのデータ型に関係なく、データに対する操作 (Unicode への変換など) は実行されないため、 void * 型が返されたかのように、返されたデータを想定した構造体にマップする必要があります。

データを読み取らずにファイルの終わりに達した場合は NULL。または、ブール値の場合、データを読み取らずにファイルの末尾に到達した場合は FALSE。

解説

この関数は、結果の行を、 pstr パラメーターによって参照されるメモリに配置します。 nMax で指定された最大文字数に達すると、文字の読み取りが停止します。 バッファーは常に終端の null 文字を受け取ります。

最初に SetReadBufferSize を呼び出さずにReadStringを呼び出すと、4096 バイトのバッファーが取得されます。

CInternetFile::Seek

このメンバー関数を呼び出して、以前に開いたファイル内のポインターの位置を変更します。

virtual ULONGLONG Seek(
    LONGLONG lOffset,
    UINT nFrom);

パラメーター

lOffset
ファイル内の読み取り/書き込みポインターを移動するためのバイト単位のオフセット。

nFrom
オフセットの相対参照。 次のいずれかの値を指定する必要があります。

  • CFile::begin ファイル ポインター lOff バイトをファイルの先頭から順に移動します。

  • CFile::current ファイル ポインター lOff バイトをファイル内の現在の位置から移動します。

  • CFile::end ファイル ポインター lOff バイトをファイルの末尾から移動します。 既存のファイルをシークするには、lOff が負である必要があります。正の値はファイルの末尾を超えてシークされます。

戻り値

要求された位置が有効な場合、ファイルの先頭からの新しいバイト オフセット。それ以外の場合、値は未定義であり、 CInternetException オブジェクトがスローされます。

解説

Seek関数は、ポインターを指定した量 (絶対または比較的) 移動することで、ファイルの内容へのランダム アクセスを許可します。 シーク中にデータが実際に読み取られます。

現時点では、このメンバー関数の呼び出しは、 CHttpFile オブジェクトに関連付けられているデータに対してのみサポートされています。 FTP または gopher 要求ではサポートされていません。 これらのサポートされていないサービスのいずれかに対して Seek を呼び出すと、Win32 エラー コード ERROR_INTERNET_INVALID_OPERATIONに戻ります。

ファイルを開くと、ファイル ポインターはオフセット 0 (ファイルの先頭) にあります。

Note

Seekを使用すると、暗黙的な呼び出しで Flush が発生する可能性があります。

基底クラスの実装 ( CFile::Seek) の例を参照してください。

CInternetFile::SetReadBufferSize

このメンバー関数を呼び出して、 CInternetFile派生オブジェクトによって使用される一時読み取りバッファーのサイズを設定します。

BOOL SetReadBufferSize(UINT nReadSize);

パラメーター

nReadSize
バイト単位のバッファー サイズ。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。 呼び出しが失敗した場合、Win32 関数 GetLastError を呼び出して、エラーの原因を特定できます。

解説

基になる WinInet API はバッファリングを実行しないため、読み取るデータの量に関係なく、アプリケーションが効率的にデータを読み取ることができるバッファー サイズを選択します。 通常、 Read の各呼び出しに大量のデータ (4 KB 以上など) が含まれる場合は、バッファーは必要ありません。 ただし、 Read を呼び出してデータの小さなチャンクを取得する場合や、 ReadString を使用して一度に個々の行を読み取る場合は、読み取りバッファーによってアプリケーションのパフォーマンスが向上します。

既定では、 CInternetFile オブジェクトは読み取り用のバッファリングを提供しません。 このメンバー関数を呼び出す場合は、ファイルが読み取りアクセス用に開かれていることを確認する必要があります。

バッファー サイズはいつでも増やすことができますが、バッファーを縮小しても効果はありません。 最初に SetReadBufferSize を呼び出さずに ReadString を呼び出すと、4096 バイトのバッファーが取得されます。

CInternetFile::SetWriteBufferSize

このメンバー関数を呼び出して、 CInternetFile派生オブジェクトによって使用される一時書き込みバッファーのサイズを設定します。

BOOL SetWriteBufferSize(UINT nWriteSize);

パラメーター

nWriteSize
バッファーのサイズ (バイト単位)。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。 呼び出しが失敗した場合、Win32 関数 GetLastError を呼び出して、エラーの原因を特定できます。

解説

基になる WinInet API はバッファリングを実行しないため、書き込むデータの量に関係なく、アプリケーションが効率的にデータを書き込むことができるようにするバッファー サイズを選択します。 通常、 Write の各呼び出しに大量のデータが含まれている場合 (たとえば、一度に 4 KB 以上)、バッファーは必要ありません。 ただし、 Write を呼び出して小さなデータ チャンクを書き込む場合、書き込みバッファーを使用すると、アプリケーションのパフォーマンスが向上します。

既定では、 CInternetFile オブジェクトは書き込みのためのバッファリングを提供しません。 このメンバー関数を呼び出す場合は、ファイルが書き込みアクセス用に開かれていることを確認する必要があります。 書き込みバッファーのサイズはいつでも変更できますが、変更すると暗黙的な呼び出しが Flush

CInternetFile::Write

このメンバー関数を呼び出して、指定したバイト数である lpvBuf nCount に書き込みます。

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

パラメーター

lpBuf
書き込まれる最初のバイトへのポインター。

nCount
書き込むバイト数を指定します。

解説

データの書き込み中にエラーが発生した場合、関数はエラーを記述する CInternetException オブジェクトをスローします。

CInternetFile::WriteString

この関数は、null で終わる文字列を関連付けられたファイルに書き込みます。

virtual void WriteString(LPCTSTR pstr);

パラメーター

pstr
書き込む内容を含む文字列へのポインター。

解説

データの書き込み中にエラーが発生した場合、関数はエラーを記述する CInternetException オブジェクトをスローします。

関連項目

CStdioFile クラス
階層図
CInternetConnection クラス