티스토리 뷰
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, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
ReadFile(hFile, strRead, wcslen(strRead), &dwRead, NULL);
TextOut(hdc, 100, 100, strRead, wcslen(strRead));
CloseHandle(hFile);
ReleaseDC(hWnd, hdc);
break;
case WM_LBUTTONDOWN:
hFile = CreateFile(L"FileInOutEx.txt", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
memcpy(strWrite, &wd, 2); // 유니코드 텍스트라고 표시
WriteFile(hFile, strWrite, (wcslen(strWrite) + 1) * sizeof(TCHAR), &dwWritten, NULL);
CloseHandle(hFile);
break;
|
cs |