티스토리 뷰

프로그래밍/API

API File

에어버스 2016. 5. 13. 16:33

API File

1. 파일생성

HANDLE CreateFile(
  LPCTSTR 파일명, // COM 포트 1번인 경우 COM1 으로 지정
  DWORD 파일 접근 권한,
  DWORD 파일 공유모드,
  LPSECURITY_ATTRIBUTES 파일 보안속정 지정 구조체, // NT사용권한자 모드를 설정하기 위해 사용 
  DWORD 파일 생성/열기,
  DWORD 생성할 파일 속성 또는 기타 객체의 속성,
  HANDLE 새파일 속성용 템플릿파일); // 윈95/98인 경우 미지원으로 NULL

<파일접근 권한>
0                       장치에 실제로 접근하지 않고도 장치의 속성을 조사할 수 있다
GENERIC_READ    읽기전용
GENERIC_WRITE    쓰기전용

<파일 공유모드>
FILE_SHARE_READ      다른 프로세스가 읽기전용으로 요청하면 허용  
FILE_SHARE_WRITE     다른 프로세스가 쓰기전용으로 요청하면 허용
FILE_SHARE_DELETE    삭제 접근권한을 요청한 경우만 허용

<파일 생성/열기>
CREATE_NE            파일을 새로 만듬, 만약 기존 파일이 있으면 에러 반환
CREATE_ALWAYS        항상 파일을 새로 만듬, 만약 기존에 파일이 있다면 해당 파일에 덮어쓴다
OPEN_EXISTING          기존 파일을 연다. 만약 열려는 파일이 없다면 에러를 반환  
OPEN_ALWAYS           파일을 연다. 열려는 파일이 없을 경우 새로 만들어서 연다 
TRUNCATE_EXISTING

<파일 속성 또는 기타 객체속성>
FILE_ATTRIBUTE_ARCHIVE                          쓰기
FILE_ATTRIBUTE_ENCRYPTED                      암호화해서 생성
FILE_ATTRIBUTE_HIDDEN                          숨김파일
FILE_ATTRIBUTE_NORMAL                         속성지정없음
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED    콘텐츠 인덱스 되지 않게 지정
FILE_ATTRIBUTE_OFFLINE                          데이터가 오프라인 상태로 즉시 사용불가  
FILE_ATTRIBUTE_READONLY                      읽기전용
FILE_ATTRIBUTE_SYSTEM                          시스템파일  
FILE_ATTRIBUTE_TEMPORARY                    임시파일로 생성

HANDLE hFile = CreateFile(L"test.txt", GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

2. 파일 읽기

BOOL ReadFile(
    HANDLE 파일핸들,
    LPVOID 파일에서 읽어온 데이터를 저장할 버퍼 포인터, 
    DWORD 읽어올 바이트 수,
    LPDWORD 실제 읽어온 바이트 수를 반환 할 인수포인터,
    LPOVERLAPPED 비동기 입출력 용 OVERLAPPED 구조체 포인터); // 비동기 입출력 아니면 NULL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    static HANDLE hFile;
    DWORD dwWritten;
    DWORD dwRead;
    TCHAR strRead[MAX_PATH];
    WORD wd = 0xFEFF;
    TCHAR strWrite[] = L" 문자열을 파일에 씁니다.";
    HDC hdc;
 
    switch (message)
    {
    case WM_RBUTTONDOWN:
        hdc = GetDC(hWnd);
        hFile = CreateFile(L"FileInOutEx.txt", GENERIC_READ, 0NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
        ReadFile(hFile, strRead, wcslen(strRead), &dwRead, NULL);
        TextOut(hdc, 100100, strRead, wcslen(strRead));
        CloseHandle(hFile);
        ReleaseDC(hWnd, hdc);
        break;
    case WM_LBUTTONDOWN:
        hFile = CreateFile(L"FileInOutEx.txt", GENERIC_WRITE, 0NULL, CREATE_ALWAYS, 0NULL);
        memcpy(strWrite, &wd, 2); // 유니코드 텍스트라고 표시
        WriteFile(hFile, strWrite, (wcslen(strWrite) + 1* sizeof(TCHAR), &dwWritten, NULL);
        CloseHandle(hFile);
        break;
 
cs
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30