■ 파일 열고 닫기 함수 : 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 : 파일 이름 변경

Posted by 모과이IT
,