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
メンバー関数Open
、LockRange
、UnlockRange
、およびDuplicate
は、CInternetFile
用に実装されていません。 CInternetFile
オブジェクトでこれらの関数を呼び出すと、CNotSupportedExceptionが取得されます。
他の MFC インターネット クラスと連携 CInternetFile
方法の詳細については、「WinInet を使用したInternet プログラミング 」の記事を参照してください。
CInternetFile
Header: afxinet.h
このオブジェクトに関連付けられているファイルを閉じ、ファイルを読み取りまたは書き込みに使用できないようにします。
virtual void Abort();
オブジェクトを破棄する前にファイルを閉じていない場合は、デストラクターによって閉じられます。
例外を処理する場合、 Abort
は Close と 2 つの重要な点で異なります。 まず、 Abort
関数はエラーを無視するため、エラー時に例外をスローしません。 次に、Abort
は、ファイルが以前に開かれていたり閉じられたりしていない場合ASSERT をしません。
このメンバー関数は、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
を閉じ、そのリソースを解放します。
virtual void Close();
ファイルが書き込み用に開かれた場合、バッファー内のすべてのデータがホストに確実に書き込まれるよう、 Flush への暗黙的な呼び出しがあります。 ファイルの使用が完了したら、 Close
を呼び出す必要があります。
このメンバー関数を呼び出して、書き込みバッファーの内容をフラッシュします。
virtual void Flush();
Flush
を使用して、メモリ内のすべてのデータがターゲット コンピューターに実際に書き込まれたことを確認し、ホスト コンピューターとのトランザクションが完了したことを確認します。 Flush
は、書き込み用に開かれた CInternetFile
オブジェクトでのみ有効です。
ファイルのサイズを返します。
virtual ULONGLONG GetLength() const;
このオブジェクトに関連付けられているファイルへのハンドル。
HINTERNET m_hFile;
この演算子を使用して、現在のインターネット セッションの Windows ハンドルを取得します。
operator HINTERNET() const;
このメンバー関数を呼び出して、指定されたメモリを読み取ります。指定したバイト数である lpvBuf から始まり、 nCount。
virtual UINT Read(
void* lpBuf,
UINT nCount);
lpBuf
ファイル データを読み込むメモリ アドレスへのポインター。
nCount
書き込むバイト数。
バッファーに転送するバイト数。 ファイルの末尾に達した場合、戻り値は nCount 未満になる可能性があります。
この関数は、実際に読み取られたバイト数を返します。ファイルが終了した場合nCount 未満になる可能性があります。 ファイルの読み取り中にエラーが発生した場合、この関数はエラーを説明する CInternetException オブジェクトをスローします。 ファイルの末尾を越える読み取りはエラーとは見なされず、例外がスローされないことに注意してください。
すべてのデータが確実に取得されるようにするには、メソッドが 0 を返すまで、アプリケーションは引き続き CInternetFile::Read
メソッドを呼び出す必要があります。
改行文字が見つかるまで、このメンバー関数を呼び出して文字のストリームを読み取ります。
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 バイトのバッファーが取得されます。
このメンバー関数を呼び出して、以前に開いたファイル内のポインターの位置を変更します。
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 (ファイルの先頭) にあります。
注意
Seek
を使用すると、暗黙的な呼び出しで Flush が発生する可能性があります。
基底クラスの実装 ( CFile::Seek) の例を参照してください。
このメンバー関数を呼び出して、 CInternetFile
派生オブジェクトによって使用される一時読み取りバッファーのサイズを設定します。
BOOL SetReadBufferSize(UINT nReadSize);
nReadSize
バイト単位のバッファー サイズ。
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。 呼び出しが失敗した場合、Win32 関数 GetLastError を呼び出して、エラーの原因を特定できます。
基になる WinInet API はバッファリングを実行しないため、読み取るデータの量に関係なく、アプリケーションが効率的にデータを読み取ることができるバッファー サイズを選択します。 通常、 Read の各呼び出しに大量のデータ (4 KB 以上など) が含まれる場合は、バッファーは必要ありません。 ただし、 Read
を呼び出してデータの小さなチャンクを取得する場合や、 ReadString を使用して一度に個々の行を読み取る場合は、読み取りバッファーによってアプリケーションのパフォーマンスが向上します。
既定では、 CInternetFile
オブジェクトは読み取り用のバッファリングを提供しません。 このメンバー関数を呼び出す場合は、ファイルが読み取りアクセス用に開かれていることを確認する必要があります。
バッファー サイズはいつでも増やすことができますが、バッファーを縮小しても効果はありません。 最初に SetReadBufferSize
を呼び出さずに ReadString を呼び出すと、4096 バイトのバッファーが取得されます。
このメンバー関数を呼び出して、 CInternetFile
派生オブジェクトによって使用される一時書き込みバッファーのサイズを設定します。
BOOL SetWriteBufferSize(UINT nWriteSize);
nWriteSize
バッファーのサイズ (バイト単位)。
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。 呼び出しが失敗した場合、Win32 関数 GetLastError を呼び出して、エラーの原因を特定できます。
基になる WinInet API はバッファリングを実行しないため、書き込むデータの量に関係なく、アプリケーションが効率的にデータを書き込むことができるようにするバッファー サイズを選択します。 通常、 Write の各呼び出しに大量のデータが含まれている場合 (たとえば、一度に 4 KB 以上)、バッファーは必要ありません。 ただし、 Write を呼び出して小さなデータ チャンクを書き込む場合、書き込みバッファーを使用すると、アプリケーションのパフォーマンスが向上します。
既定では、 CInternetFile
オブジェクトは書き込みのためのバッファリングを提供しません。 このメンバー関数を呼び出す場合は、ファイルが書き込みアクセス用に開かれていることを確認する必要があります。 書き込みバッファーのサイズはいつでも変更できますが、変更すると暗黙的な呼び出しが Flush。
このメンバー関数を呼び出して、指定したバイト数である lpvBuf nCount に書き込みます。
virtual void Write(
const void* lpBuf,
UINT nCount);
lpBuf
書き込まれる最初のバイトへのポインター。
nCount
書き込むバイト数を指定します。
データの書き込み中にエラーが発生した場合、関数はエラーを記述する CInternetException オブジェクトをスローします。
この関数は、null で終わる文字列を関連付けられたファイルに書き込みます。
virtual void WriteString(LPCTSTR pstr);
pstr
書き込む内容を含む文字列へのポインター。
データの書き込み中にエラーが発生した場合、関数はエラーを記述する CInternetException オブジェクトをスローします。