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로 끝나는 문자열을 파일에 씁니다. |
Public 연산자
속성 | 설명 |
---|---|
CInternetFile::operator HINTERNET | 인터넷 핸들에 대한 캐스팅 연산자입니다. |
보호된 데이터 멤버
속성 | 설명 |
---|---|
CInternetFile::m_hFile | 파일에 대한 핸들입니다. |
설명
CHttpFile 및 CGopherFile 파일 클래스에 대한 기본 클래스를 제공합니다. 개체를 CInternetFile
직접 만들지 않습니다. 대신 CGopherConnection::OpenFile 또는 CHttpConnection::OpenRequest를 호출하여 파생 클래스 중 하나의 개체를 만듭니다. CFtpConnection::OpenFile을 호출하여 개체를 만들 CInternetFile
수도 있습니다.
멤버 함수 CInternetFile
, Open
UnlockRange
LockRange
및 Duplicate
에 대해 CInternetFile
구현되지 않습니다. 개체에서 이러한 함수를 CInternetFile
호출하면 CNotSupportedException이 발생합니다.
다른 MFC 인터넷 클래스의 작동 방식에 CInternetFile
대한 자세한 내용은 WinInet을 사용한 인터넷 프로그래밍 문서를 참조하세요.
상속 계층 구조
CInternetFile
요구 사항
헤더: afxinet.h
CInternetFile::Abort
이 개체와 연결된 파일을 닫고 파일을 읽거나 쓸 수 없게 만듭니다.
virtual void Abort();
설명
개체를 삭제하기 전에 파일을 닫지 않은 경우 소멸자가 파일을 닫습니다.
예외 Abort
를 처리할 때는 두 가지 중요한 방법으로 Close와 다릅니다. 첫째, 함수는 Abort
오류를 무시하므로 실패에 대한 예외를 throw하지 않습니다. 둘째, 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();
설명
파일을 쓰기 위해 연 경우 모든 버퍼링된 데이터가 호스트에 기록되도록 플러시에 대한 암시적 호출이 있습니다. 파일 사용을 마쳤으면 호출 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
지정된 바이트 수인 nCount인 lpvBuf부터 지정된 메모리를 읽으려면 이 멤버 함수를 호출합니다.
virtual UINT Read(
void* lpBuf,
UINT nCount);
매개 변수
lpBuf
파일 데이터를 읽을 메모리 주소에 대한 포인터입니다.
nCount
쓸 바이트 수 입니다.
Return Value
버퍼로 전송된 바이트 수입니다. 파일 끝에 도달한 경우 반환 값이 nCount보다 작을 수 있습니다.
설명
이 함수는 실제로 읽은 바이트 수를 반환합니다. 파일이 종료되면 nCount보다 작을 수 있는 숫자입니다. 파일을 읽는 동안 오류가 발생하면 함수는 오류를 설명하는 CInternetException 개체를 throw합니다. 파일의 끝을 지나서 읽는 것은 오류로 간주되지 않으며 예외가 throw되지 않습니다.
모든 데이터를 검색하려면 메서드가 0을 반환할 때까지 애플리케이션에서 CInternetFile::Read
메서드를 계속 호출해야 합니다.
CInternetFile::ReadString
줄임표 문자를 찾을 때까지 이 멤버 함수를 호출하여 문자 스트림을 읽습니다.
virtual BOOL ReadString(CString& rString);
virtual LPTSTR ReadString(
LPTSTR pstr,
UINT nMax);
매개 변수
pstr
읽는 줄을 받을 문자열에 대한 포인터입니다.
nMax
읽을 최대 문자 수입니다.
rString
읽기 줄을 수신하는 CString 개체에 대한 참조입니다.
Return Value
CInternetFile 개체에서 검색된 일반 데이터를 포함하는 버퍼에 대한 포인터입니다. 이 메서드에 전달된 버퍼의 데이터 형식에 관계없이 데이터에 대한 조작(예: 유니코드로 변환)을 수행하지 않으므로 반환된 데이터를 반환된 형식이 반환된 것처럼 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 가 음수여야 합니다. 양수 값은 파일의 끝을 지나서 검색됩니다.
Return Value
요청된 위치가 유효한 경우 파일의 시작 부분에서 새 바이트 오프셋입니다. 그렇지 않으면 값이 정의되지 않고 CInternetException 개체가 throw됩니다.
설명
이 함수는 Seek
포인터를 절대적으로 또는 상대적으로 지정된 양으로 이동하여 파일 내용에 임의로 액세스할 수 있도록 합니다. 검색하는 동안 실제로 데이터를 읽지 않습니다.
현재 이 멤버 함수에 대한 호출은 개체와 CHttpFile
연결된 데이터에 대해서만 지원됩니다. FTP 또는 gopher 요청에 대해서는 지원되지 않습니다. 이러한 지원되지 않는 서비스 중 하나를 호출 Seek
하면 Win32 오류 코드 ERROR_INTERNET_INVALID_OPERATION 다시 전달됩니다.
파일을 열면 파일 포인터가 파일의 시작 부분인 오프셋 0에 있습니다.
참고 항목
사용으로 Seek
인해 Flush에 대한 암시적 호출이 발생할 수 있습니다.
예시
기본 클래스 구현( CFile::Seek)에 대한 예제를 참조하세요.
CInternetFile::SetReadBufferSize
이 멤버 함수를 호출하여 -derived 개체에 CInternetFile
사용되는 임시 읽기 버퍼의 크기를 설정합니다.
BOOL SetReadBufferSize(UINT nReadSize);
매개 변수
nReadSize
원하는 버퍼 크기(바이트)입니다.
Return Value
성공하면 0이 아니고, 그렇지 않으면 0입니다. 호출이 실패하면 Win32 함수 GetLastError 를 호출하여 오류의 원인을 확인할 수 있습니다.
설명
기본 WinInet API는 버퍼링을 수행하지 않으므로 읽을 데이터의 양에 관계없이 애플리케이션에서 데이터를 효율적으로 읽을 수 있는 버퍼 크기를 선택합니다. 읽기에 대한 각 호출에 일반적으로 큰 양의 데이터(예: 4킬로바이트 이상)가 포함된 경우 버퍼가 필요하지 않습니다. 그러나 작은 데이터 청크를 가져오기 위해 호출 Read
하거나 ReadString을 사용하여 한 번에 개별 줄을 읽는 경우 읽기 버퍼가 애플리케이션 성능을 향상시킵니다.
기본적으로 개체는 CInternetFile
읽기용 버퍼링을 제공하지 않습니다. 이 멤버 함수를 호출하는 경우 읽기 액세스를 위해 파일이 열려 있는지 확인해야 합니다.
언제든지 버퍼 크기를 늘릴 수 있지만 버퍼를 축소해도 아무런 영향을 주지 않습니다. 먼저 SetReadBufferSize
를 호출하지 않고 ReadString를 호출하는 경우 4096 바이트의 버퍼를 가져옵니다.
CInternetFile::SetWriteBufferSize
이 멤버 함수를 호출하여 -derived 개체에 CInternetFile
사용되는 임시 쓰기 버퍼의 크기를 설정합니다.
BOOL SetWriteBufferSize(UINT nWriteSize);
매개 변수
nWriteSize
버퍼의 크기(바이트)입니다.
Return Value
성공하면 0이 아니고, 그렇지 않으면 0입니다. 호출이 실패하면 Win32 함수 GetLastError 를 호출하여 오류의 원인을 확인할 수 있습니다.
설명
기본 WinInet API는 버퍼링을 수행하지 않으므로 쓸 데이터의 양에 관계없이 애플리케이션에서 데이터를 효율적으로 쓸 수 있는 버퍼 크기를 선택합니다. 쓰기 호출마다 일반적으로 많은 양의 데이터(예: 한 번에 4킬로바이트 이상)가 포함된 경우 버퍼가 필요하지 않습니다. 그러나 쓰기를 호출하여 작은 데이터 청크를 작성하는 경우 쓰기 버퍼는 애플리케이션의 성능을 향상시킵니다.
기본적으로 개체는 CInternetFile
쓰기를 위한 버퍼링을 제공하지 않습니다. 이 멤버 함수를 호출하는 경우 쓰기 액세스를 위해 파일이 열려 있는지 확인해야 합니다. 언제든지 쓰기 버퍼의 크기를 변경할 수 있지만 이렇게 하면 Flush에 대한 암시적 호출이 발생합니다.
CInternetFile::Write
지정된 메모리 lpvBuf, 지정된 바이트 수, nCount에 쓰려면 이 멤버 함수를 호출합니다.
virtual void Write(
const void* lpBuf,
UINT nCount);
매개 변수
lpBuf
쓸 첫 번째 바이트에 대한 포인터입니다.
nCount
쓸 바이트 수를 지정합니다.
설명
데이터를 작성하는 동안 오류가 발생하면 함수는 오류를 설명하는 CInternetException 개체를 throw합니다.
CInternetFile::WriteString
이 함수는 연결된 파일에 null로 끝나는 문자열을 씁니다.
virtual void WriteString(LPCTSTR pstr);
매개 변수
pstr
쓸 내용이 포함된 문자열에 대한 포인터입니다.
설명
데이터를 작성하는 동안 오류가 발생하면 함수는 오류를 설명하는 CInternetException 개체를 throw합니다.