CStdioFile
수업
런타임 함수 fopen
에서 연 C 런타임 스트림 파일을 나타냅니다.
class CStdioFile : public CFile
속성 | 설명 |
---|---|
CStdioFile::CStdioFile |
CStdioFile 경로 또는 파일 포인터에서 개체를 생성합니다. |
이름 | 설명 |
---|---|
CStdioFile::Open |
오버로드됨. Open은 기본 CStdioFile 생성자(재정 CFile::Open 의)와 함께 사용하도록 설계되었습니다. |
CStdioFile::ReadString |
한 줄의 텍스트를 읽습니다. |
CStdioFile::Seek |
현재 파일 포인터를 배치합니다. |
CStdioFile::WriteString |
한 줄의 텍스트를 씁니다. |
속성 | 설명 |
---|---|
CStdioFile::m_pStream |
열려 있는 파일에 대한 포인터를 포함합니다. |
스트림 파일은 버퍼링되며 텍스트 모드(기본값) 또는 이진 모드에서 열 수 있습니다.
텍스트 모드는 캐리지 리턴 라인 피드 쌍에 대한 특수 처리를 제공합니다. 텍스트 모드 CStdioFile
개체에 줄 바꿈(줄 바꿈) 문자(0x0A)를 작성하면 바이트 쌍(0x0D, 0x0A)이 파일로 전송됩니다. 읽으면 바이트 쌍(0x0D, 0x0A)이 단일 0x0A 바이트로 변환됩니다.
CFile
함수 , Duplicate
LockRange
및 UnlockRange
에 대해 CStdioFile
지원되지 않습니다.
에서 이러한 함수를 CStdioFile
CNotSupportedException
호출하면 .
사용에 CStdioFile
대한 자세한 내용은 MFC의 파일 및 런타임 라이브러리 참조의 파일 처리를 참조하세요.
CStdioFile
머리글: afx.h
CStdioFile
개체를 생성하고 초기화합니다.
CStdioFile();
CStdioFile(CAtlTransactionManager* pTM);
CStdioFile(FILE* pOpenStream);
CStdioFile(
LPCTSTR lpszFileName,
UINT nOpenFlags);
CStdioFile(
LPCTSTR lpszFileName,
UINT nOpenFlags,
CAtlTransactionManager* pTM);
pOpenStream
C 런타임 함수에 대한 호출에서 반환되는 파일 포인터를 지정합니다 fopen
.
lpszFileName
원하는 파일의 경로인 문자열을 지정합니다. 경로는 상대적이거나 절대적일 수 있습니다.
nOpenFlags
파일 만들기, 파일 공유 및 파일 액세스 모드에 대한 옵션을 지정합니다. 비트 OR( |
) 연산자를 사용하여 여러 옵션을 지정할 수 있습니다.
하나의 파일 액세스 모드 옵션이 필요합니다. 다른 모드는 선택 사항입니다. 모드 옵션 및 기타 플래그 목록을 참조 CFile::CFile
하세요. MFC 버전 3.0 이상에서는 공유 플래그가 허용됩니다.
pTM
CAtlTransactionManager
개체에 대한 포인터입니다.
기본 생성자는 개체에 파일을 CStdioFile
첨부하지 않습니다. 이 생성자를 사용할 때는 메서드를 CStdioFile::Open
사용하여 파일을 열고 개체에 CStdioFile
연결해야 합니다.
단일 매개 변수 생성자는 열려 있는 파일 스트림을 개체에 CStdioFile
연결합니다. 허용되는 포인터 값에는 미리 정의된 입력/출력 파일 포인터 stdin
또는 stdout
stderr
.
두 매개 변수 생성자는 개체를 CStdioFile
만들고 지정된 경로를 사용하여 해당 파일을 엽니다.
전달하거나 lpszFileName
전달 NULL
pOpenStream
하면 생성자가 을 throw합니다CInvalidArgException*
.
파일을 열거나 만들 수 없는 경우 생성자는 CFileException*
.
TCHAR* pFileName = _T("CStdio_File.dat");
CStdioFile f1;
if(!f1.Open(pFileName, CFile::modeCreate | CFile::modeWrite
| CFile::typeText))
{
TRACE(_T("Unable to open file\n"));
}
CStdioFile f2(stdout);
try
{
CStdioFile f3( pFileName,
CFile::modeCreate | CFile::modeWrite | CFile::typeText );
}
catch(CFileException* pe)
{
TRACE(_T("File could not be opened, cause = %d\n"),
pe->m_cause);
pe->Delete();
}
m_pStream
데이터 멤버는 C 런타임 함수fopen
에서 반환한 열린 파일에 대한 포인터입니다.
FILE* m_pStream;
NULL
파일이 열려 있거나 닫힌 적이 없는 경우입니다.
오버로드됨. Open은 기본 CStdioFile
생성자와 함께 사용하도록 설계되었습니다.
virtual BOOL Open(
LPCTSTR lpszFileName,
UINT nOpenFlags,
CFileException* pError = NULL);
virtual BOOL Open(
LPCTSTR lpszFileName,
UINT nOpenFlags,
CAtlTransactionManager* pTM,
CFileException* pError = NULL);
lpszFileName
원하는 파일의 경로인 문자열입니다. 경로는 상대적이거나 절대적일 수 있습니다.
nOpenFlags
공유 및 액세스 모드입니다. 파일을 열 때 수행할 작업을 지정합니다. 비트 OR(|
) 연산자를 사용하여 옵션을 결합할 수 있습니다. 하나의 액세스 권한과 하나의 공유 옵션이 필요합니다. modeCreate 및 modeNoInherit 모드는 선택 사항입니다.
pError
실패한 작업의 상태를 받을 기존 파일 예외 개체에 대한 포인터입니다.
pTM
CAtlTransactionManager
개체에 대한 포인터입니다.
성공하면 TRUE
이고, 그렇지 않으면 FALSE
입니다.
개체와 연결된 CStdioFile
파일에서 최대 -1자의 버퍼nMax
로 텍스트 데이터를 읽습니다.
virtual LPTSTR ReadString(
LPTSTR lpsz,
UINT nMax);
virtual BOOL ReadString(CString& rString);
lpsz
null로 끝나는 텍스트 문자열을 받을 사용자 제공 버퍼에 대한 포인터를 지정합니다.
nMax
종료 null을 포함하여 버퍼에 lpsz
쓸 최대 문자 수를 지정합니다.
rString
함수가 CString
반환될 때 문자열을 포함할 개체에 대한 참조입니다.
텍스트 데이터를 포함하는 버퍼에 대한 포인터입니다. NULL
데이터를 읽지 않고 파일 끝에 도달하면 이고, 또는 부울 FALSE
인 경우 데이터를 읽지 않고 파일 끝에 도달한 경우
첫 번째 줄 바꿈 문자에 의해 읽기가 중지됩니다. 이 경우 -1자 미만 nMax
의 문자를 읽은 경우 줄 바꿈 문자가 버퍼에 저장됩니다. 두 경우 모두 null 문자('\0'
)가 추가됩니다.
CFile::Read
는 텍스트 모드 입력에도 사용할 수 있지만 캐리지 리턴 라인 피드 쌍에서는 종료되지 않습니다.
참고
CString
이 함수의 버전은 있는 LPTSTR
경우 제거합니다'\n'
. 버전은 제거하지 않습니다.
CStdioFile f(stdin);
TCHAR buf[100];
f.ReadString(buf, 99);
이전에 연 파일의 포인터 위치를 변경합니다.
virtual ULONGLONG Seek(
LONGLONG lOff,
UINT nFrom);
lOff
포인터를 이동할 바이트 수입니다.
nFrom
포인터 이동 모드입니다. 다음 값 중 하나여야 합니다.
CFile::begin
: 파일 포인터lOff
바이트를 파일의 시작 부분에서 앞으로 이동합니다.CFile::current
: 파일의 현재 위치에서 파일 포인터lOff
바이트를 이동합니다.CFile::end
: 파일의 끝에서 파일 포인터lOff
바이트를 이동합니다.lOff
기존 파일을 검색하려면 음수여야 합니다. 양수 값은 파일의 끝을 지나서 검색됩니다.
요청된 위치가 유효한 Seek
경우 파일의 시작 부분에서 새 바이트 오프셋을 반환합니다. 그렇지 않으면 반환 값이 정의되지 않고 개체가 CFileException
throw됩니다.
이 함수는 Seek
포인터를 절대적으로 또는 상대적으로 지정된 양으로 이동하여 파일 내용에 임의로 액세스할 수 있도록 합니다. 검색하는 동안 실제로 데이터를 읽지 않습니다. 요청된 위치가 파일 크기보다 크면 파일 길이가 해당 위치로 확장되며 예외가 throw되지 않습니다.
파일을 열면 파일 포인터가 파일의 시작 부분인 오프셋 0에 배치됩니다.
이 구현 Seek
은 CRT(런타임 라이브러리) 함수 fseek
를 기반으로 합니다. 텍스트 모드에서 열린 스트림의 Seek
사용에는 몇 가지 제한이 있습니다. 자세한 내용은 fseek
, _fseeki64
을 참조하세요.
다음 예제에서는 파일의 시작 부분에서 포인터 1000바이트 이동 하는 방법을 Seek
보여 있습니다 cfile
. Seek
데이터를 읽지 않으므로 이후에 데이터를 읽기 위해 호출 CStdioFile::ReadString
해야 합니다.
CStdioFile cfile(_T("Stdio_Seek_File.dat"), CFile::modeWrite |
CFile::modeCreate);
LONGLONG lOff = 1000;
ULONGLONG lActual = cfile.Seek(lOff, CFile::begin);
버퍼의 데이터를 개체와 CStdioFile
연결된 파일에 씁니다.
virtual void WriteString(LPCTSTR lpsz);
lpsz
null로 끝나는 문자열을 포함하는 버퍼에 대한 포인터를 지정합니다.
종료 null 문자( \0
)가 파일에 기록되지 않습니다. 이 메서드는 줄 바꿈 문자를 lpsz
캐리지 리턴 라인 피드 쌍으로 파일에 씁니다.
파일에 null로 종료되지 않은 데이터를 쓰려면 사용 CStdioFile::Write
하거나 CFile::Write
.
이 메서드는 매개 변수에 대해 지정 NULL
한 경우를 CInvalidArgException*
throw합니다lpsz
.
이 메서드는 CFileException*
파일 시스템 오류에 대한 응답으로 throw합니다.
CStdioFile f(stdout);
TCHAR buf[] = _T("test string");
f.WriteString(buf);
CFile
클래스
계층 구조 차트
CFile
클래스
CFile::Duplicate
CFile::LockRange
CFile::UnlockRange
CNotSupportedException
클래스