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 を呼び出して、派生クラスの 1 つのオブジェクトを作成します。 CFtpConnection::OpenFile を呼び出してオブジェクトを作成CInternetFileすることもできます。

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

他の MFC インターネット クラスでの動作の詳細については、WinInet を使用したインターネット プログラミングに関CInternetFileする記事を参照してください。

継承階層

CObject

Cfile

CStdioFile

CInternetFile

必要条件

ヘッダー: afxinet.h

CInternetFile::Abort

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

virtual void Abort();

解説

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

例外を処理する場合、 Abort 2 つの重要な点で Close とは異なります。 最初に Abort 、関数はエラーを無視するため、エラー時に例外をスローしません。 次に、Abortファイルが開かStandard Edition以前に閉じられなかった場合は、AS Standard Edition RT を実行しません

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 を呼び出して、派生クラスの 1 つのオブジェクトを作成します。 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 オブジェクトをスローします。 ファイルの末尾を越える読み取りはエラーとは見なされず、例外がスローされないことに注意してください。

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

CInternetFile::ReadString

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

virtual BOOL ReadString(CString& rString);

virtual LPTSTR ReadString(
    LPTSTR pstr,
    UINT nMax);

パラメーター

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

nMax
読み取る最大文字数。

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

戻り値

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

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

解説

この関数は、結果の行を 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

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

BOOL SetReadBufferSize(UINT nReadSize);

パラメーター

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

戻り値

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

解説

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

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

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

CInternetFile::SetWriteBufferSize

このメンバー関数を呼び出して、-derived オブジェクトによって使用される一時書き込みバッファーのサイズを 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 クラス