■ 파일 열고 닫기 함수 : Open()과 Close()
CFile file ; file.Open(_T("File.txt"), CFile::modeCreate| CFile::modeWrite ) ; // ... 파일에 데이터를 읽거나 쓰는 작업 수행 file.Close() ; |
。Open 함수의 매개 변수
- 첫번째 arg : 파일명
- 두번째 arg : 파일 접근 모드와 공유모드 정의. OR(|) 연산자를 이용하여 여러 개 조합.
- 기존에 이 파일이 없으면 새로운 파일이 생성되고 있으면 기존 파일의 맨 뒤에 새로 쓰는 데이터를 덧붙인다.
。 파일 접근 모드
접근 모드 | 설명 |
CFile::modeRead | 파일 읽기만 가능 |
CFile::modeWrite | 파일 쓰기만 가능 |
CFile::modeReadWrite | 파일 읽고 쓰기 모두가능 |
CFile::modeCreate | 파일 새로 생성 |
CFile:modeNoTruncate | 기존에 파일 데이터가 존재 시 맨 뒤에 추가하지 않고 덮어쓴다. |
。파일 공유 모드
공유 모드 | 설명 |
CFile::shareDenyNone | 공유하도록 파일 열기 |
CFile::shareDenyRead | 다른 프로그램의 읽기 접근 거부 |
CFile::shareDenyWrite | 다른 프로그램의 쓰기 접근 거부 |
CFile::shareExclusive | 다른 프로그램의 읽기, 쓰기 모두 거부 |
■ 파일 데이터 쓰기 함수 : Write()
- 우선 파일을 '쓰기 모드'로 연다.
int buffer[1000] ; CFile file ; file.Open( _T("File.dat", CFile::modeCreate | CFile::modeWrite ) ; file.Write( buffer, 1000 * sizeof(int) ) ; file.Close() ; |
。Write 함수의 매개 변수
- 첫번째 arg : 파일에 쓰고자 하는 데이터가 저장된 메모리 포인터를 넘겨준다.
- 두번째 arg : 데이터의 크기를 바이트 단위로 넘겨준다.
■ 파일 데이터 읽기 함수 : Read()
- 우선 파일을 '읽기 모드'로 파일을 연다.
int buffer[1000] ; CFile file ; file.Open( _T("File.dat"), CFile::modeRead ) ; file.Read( buffer, 1000 * sizeof(int) ) ; file.Close() ; |
。Read 함수의 맴개 변수
- 첫번째 arg : 읽은 데이터를 저장할 메모리의 포인터를 넘겨 준다.
- 두번째 arg : 읽고자 하는 데이터의 크기를 바이트 단위로 넘 겨준다.
■ 파일의 길이를 알아내는 함수 : GetLength()
- 파일의 크기를 알아내고 그 크기만큼 데이터를 읽어 온다.
CFile file ; file.Open( _T("File.dat"), CFile::modeRead ) ; int nLength = file.GetLength() ; int *buffer = new BYTE [nLength] ; file.Read( buffer, nLength ) ; file.Close() ; |
■ 에러 처리 : TRY ~ CATCH 블록
- TRY 블록 안의 루틴을 수행하다가 실행 중 에러가 발생할 경우에만 CATCH 블록이 실행된다.
- CFileException 함수의 ReportError 함수를 호출한다.
- ReportError 함수는 사용자에게 어떤 에러가 발생했는지 알려주는 메세지 박스를 출력해 준다.
TRY { int buffer[1000] ; CFile file ; file.Open( _T("File.dat"), CFile::modeCreate | CFile::modeWrite ) ; file.Write( buffer, 1000 * sizeof(int) ) ; file.Close() ; } CATCH(CFileException e ) { e->ReportError() ; } END_CATCH |
■ 파일 포인터
。현재 파일 포인터 위치 얻기 : GetPosition
- [TBD]
。파일 포인터 옮기기 : Seek
file.Seek( 1000, CFile::current ) ; file.Read( buffer1, sizeof(int) * 10 ) ; file.Seek( -2000, CFile::end ) ; flie.Read( buffer2, sizeof(int) * 10 ) ; |
- Seek 함수의 매개변수
첫번째 arg : 이동 거리
두번째 arg : 이동 시 파일 포인터 기준 위치
- 파일 포인터의 기준
매개변수 | 설명 |
CFile::begin | 기준은 파일의 처음 위치 |
CFile::current | 기준은 현재 파일 포인터의 위치 |
CFile::end | 기준은 파일의 끝 위치 |
■ 그 밖에 파일 처리 (기타 멤버 함수)
GetFilePath : 파일의 전체 경로명 반환
GetFileName : 파일 이름 반환
GetFileTitle : 확장자를 제외한 파일 이름 반환
GetStatus : 파일이 생성된 시간, 최종 변경된 시간, 크기, 속성 등 파일의 상태 얻기
SetStatus : 파일의 상태를 지정
Remove : 파일 지우기
Rename : 파일 이름 변경
'개발지식창고 > MFC' 카테고리의 다른 글
CString 사용예제 (0) | 2010.08.17 |
---|---|
CString 관련 함수 (0) | 2010.08.17 |
WinMain.cpp를 MFC 클래스로 구현하면... (0) | 2010.07.30 |
MFC 내부에 감추어진 것들 (0) | 2010.07.30 |
다중 도큐먼트 ( MDI : Multiple Document Interface ) (0) | 2010.07.30 |