태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.


2011/03/12 23:43

[C++] File I/O

1. 파일 생성 및 열기, 닫기

 

HANDLE CreateFile(LPCTSTR fname,DWORD access,DWORD share,LPSECURITY _ATTRIBUTES lpSecurityAttributes,

DWORDdwCreateDisposition,DWORD dwFlagAndAttributes,HANDLE hTempFile);

BOOL CloseHandle(HANDLE hObject);  - 커널 객체의 핸들을 닫는 interface 

 실패시 INVALID_HANDLE_VALUE 반환(0xFFFFFFFF임 즉, -1)

 

 fname - 절대 경로명 과 상대경로명을 사용할 수 있다. 

 

 

 access - GENERIC_READ, GENERIC_WRITE의 조합 

 

 

 share - 0이면 공유 안함, FILE_SHARE_READ 와 FILE_SHARE_WRITE의 조합 

 

 

 lpSecurityAttributes - 파일 핸들의 상속에 대한 속성 

 

 

 dwCreationDisposition

    CREATE_NEW : 파일이 없을 경우에만 새로운 파일을 만든다.

    CREATE_ALWAYS : 새로운 파일을 만든다.(기존에 파일이 있으면 삭제 후 만든다.)

    OPEN_EXISTING: 파일이 없으면 INVALID_HANDLE_VALUE반환 (0xFFFFFFFF로 -1이다.)

    OPEN_ALWAYS: 파일이 없을 경우에만 새로운 파일을 만든다.

    TRUNCATE_EXISTING: 파일을 열고 파일의 사이즈가 0이된다. 

 

dwFlagAndAttributes

    파일 속성 

    FILE_ATTRIBUTE_ARCHIVE, FILE_ATTRIBUTE_HIDEN,FILE_ATTRIBUTE_NORMAL,FILE_ATTRIBUTE_OFFLINE,

    FILE_ATTRIBUTE_READONLY,FILE_ATTRIBUTE_ SYSTEM,FILE_ATTRIBUTE_TEMPORARY   

    파일 플래그

    FILE_FLAG_WRITE_THROUGH,FILE_FLAG_OVERLAPPED,FILE_FLAG_NO_BUFFERING,

    FILE_FLAG_RANDOMACCESS,FILE_FLAG_SEQUENTIAL_SCAN,FILE_FLAG_DELETE_ON_CLOSE,

    FILE_FLAG_BACKUP_SEMANTICS,FILE_FLAG_POSIX_SEMANTICS,FILE_FLAG_OPEN_REAPRSE_POINT,

    FILE_FLAG_OPEN_NO_RECALL

 

2. 파일 쓰기 및 읽기

 

BOOL WriteFile(HANDLE hFile,LPVOID lpBuffer,DWORD nNumber,LPDWORD lpNum,LPOVERLAPPED lpOverlapped);

BOOL ReadFile(HANDLE hFile,LPVOID lpBuffer,DWORD nNumber,LPDWORD lpNum,LPOVERLAPPED lpOverlapped); 

 

hFile - 연 파일 핸들

 

 

lpButter - 프로그램 상의 메모리(파일로 써야 할 버퍼의 주소, 파일로부터 받을 버퍼의 주소)

 

 

nNumber - 요구 바이트(써야 할 데이터 사이즈, 읽어야 할 데이터 사이즈) 

 

 

lpOverlapped - Blocking 모드인지 Non-Blocking 모드인지 설정(NULL은 Blocking모드)

 

 

3. 랜덤 액세스

 

DWORD SetFilePointer(HANDLE hFile,LONG offset_low,LONG offset_high,DWORD base);

 

hFile - 연 파일 핸들

 

 

offset_low, offset_high - 기준점에서 이동할 거리

 

 

base - 기준점

    FILE_BEGIN, FILE_CURRENT, FILE_END 

 

 

4. 기타

 

BOOL CopyFile(LPCTSTR nowfname,LPCTSTR newfname,BOOL bFailExisted);

BOOL MoveFile(LPCTSTR nowfname,LPCTSTR newfname);

BOOL DeleteFile(LPCTSTR fname);

DWORD GetFileSize(HANDLE hFile,LPDWORD lpFileSizeHigh);

DWORD GetFileAttributes(LPCTSTR lpFileName);

int SHFileOperation(LPSHFILEOPSTRUCT lpFileOp); 

 

5. 파일 검색

 

HANDLE FindFirstFile(LPCTSTR fname,LPWIN32_FIND_DATA lpFindData);

BOOL FindNextFile(HANDLE hFindFile,LPWIN32_FIND_DATA lpFindData);

BOOl FindClose(HANDLE hFindFile);

 

사용 예:

WIN32_FIND_DATA wfd;

HANDLE hFind; 

BOOL check = true; 

if( (hFind = FindFirstFile(Path,&wfd))!=INVALID_HANDLE_VALUE)

{

    while(check) 

    {

        Doit(&wfd);

        FindNextFile(hFind,&wfd); 

    } 

    FindClose(hFind); 

 

 

 

 6. 디렉토리 관련

 

BOOL CreateDirectory(LPCTSTR lpPathName,LPSECURITY_ATTRIBUTES lpSec);  - 디렉토리 생성

BOOL RemoveDirectory(LPCTSTR lpPathName); - 디렉토리 제거

 

HANDLE FindFirstChangeNotification(LPCTSTR lpPahtName,BOOL bWatchSubtree,DWORD dwNotifyFilter);

 - 디렉토리에 변화를 감시 

 

dwNotifyFilter - 다음의 조합 

#define FILE_NOTIFY_CHANGE_FILE_NAME      0x00000001  
#define FILE_NOTIFY_CHANGE_DIR_NAME       0x00000002  
#define FILE_NOTIFY_CHANGE_ATTRIBUTES   0x00000004  
#define FILE_NOTIFY_CHANGE_SIZE                0x00000008  
#define FILE_NOTIFY_CHANGE_LAST_WRITE    0x00000010  
#define FILE_NOTIFY_CHANGE_LAST_ACCESS  0x00000020  
#define FILE_NOTIFY_CHANGE_CREATION     0x00000040  
#define FILE_NOTIFY_CHANGE_SECURITY     0x00000100

 

 

 


저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 8

Trackback : http://blackcode.co.kr/trackback/444 관련글 쓰기

  1. Favicon of http://online-casino.eu.com BlogIcon online casino 2011/07/30 19:12 address edit & del reply

    정보 주셔서 감사합니다

  2. Favicon of http://www.cialisportal.com BlogIcon CIalIS 2011/10/12 05:34 address edit & del reply

    좋은 정보 감사! ㅎㅎ
    좋은 하루 되세요.^^

  3. Favicon of http://www.nikeairfoamposites.net/ BlogIcon Nike Foamposites 2012/03/14 16:40 address edit & del reply

    오직 당신에게 도움이 될 수있는 무언가를 - 나이키는 지속적으로 그들의 실행 신발을 개발하고 향상하기위한 새로운 방법을 찾고 있습니다.
    http://www.nikeairfoamposites.net/ Nike Air Foamposites
    http://www.nikeairfoamposites.net/ Nike Foamposite Shoes
    http://www.nikeairfoamposites.net/ Nike Foamposites

  4. 2012/03/15 14:48 address edit & del reply

    비밀댓글입니다

  5. 2012/03/21 18:21 address edit & del reply

    비밀댓글입니다

  6. 2012/03/27 16:18 address edit & del reply

    비밀댓글입니다

  7. 2012/04/05 18:07 address edit & del reply

    비밀댓글입니다

  8. Favicon of http://blogwalk.realestateaussie.net.au BlogIcon Real Estate Directory 2012/05/09 14:15 address edit & del reply

    어떤 언어를 사용하고 있습니까? 그것은 C + +?