안녕하세요. 오늘은 Win32로 파일입출력을 해보겠습니다
파일입출력을 할때 함수 4개만 사용하면 됩니다. 파일을 프로그램과 연결하는 CreateFile, 파일을 읽는 ReadFile, 파일을 쓰는 WriteFile, 파일을 닫는 CloseHandle 이렇게 4가지입니다.
* CreateFile 함수
HANDLE CreateFile(
[in] LPCSTR lpFileName,
[in] DWORD dwDesiredAccess,
[in] DWORD dwShareMode,
[in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes,
[in] DWORD dwCreationDisposition,
[in] DWORD dwFlagsAndAttributes,
[in, optional] HANDLE hTemplateFile
);
lpFileName : 파일의 경로와 읽을 파일명을 적으면 됩니다. 실행파일과 같은 폴더에 있다면 파일의 이름을 적고 다른 경로에 있다면 경로와 이름을 적어줍니다.
dwDesiredAccess : 파일에대한 권한으로 읽기,쓰기, 읽기+쓰기 설정이 가능합니다. (GENERIC_READ, GENERIC_WRITE,GENERIC_READ|GENERIC_WRITE 설정)
dwShareMode : 파일의 공유설정입니다. 예를들어 읽기공유를 하지 않고 해당파일을 열었을때 아래와처럼 뜹니다. (0, FILE_SHARE_READ , FILE_SHARE_WRITE , FILE_SHARE_DELETE 설정)
lpSecurityAttributes : 보안속성입니다.
dwCreationDisposition : 파일 생성 모드입니다. 옵션에 따라서 파일의 상태에 따라서 동작가능합니다.
dwFlagsAndAttributes : 생성되는 파일의 속성입니다.
hTemplateFile : 권한관련 옵션입니다.
참고 : https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-createfilea
*ReadFile 함수
BOOL ReadFile(
[in] HANDLE hFile,
[out] LPVOID lpBuffer,
[in] DWORD nNumberOfBytesToRead,
[out, optional] LPDWORD lpNumberOfBytesRead,
[in, out, optional] LPOVERLAPPED lpOverlapped
);
hFile : 읽을 핸들입니다.
lpBuffer : 파일에서 읽은 내용을 저장할 변수입니다.
nNumberOfBytesToRead : 읽을 바이트수입니다.
lpNumberOfBytesRead : 실제로 읽어들인 바이트의 수입니다.
lpOverlapped : ?
예를들어 파일의 내용이 "12345"이고 nNumberOfBytesToRead =2를 하고 ReadFile을 호출하면 lpNumberOfBytesRead =2가 됩니다.
*WrtieFile함수
BOOL WriteFile(
[in] HANDLE hFile,
[in] LPCVOID lpBuffer,
[in] DWORD nNumberOfBytesToWrite,
[out, optional] LPDWORD lpNumberOfBytesWritten,
[in, out, optional] LPOVERLAPPED lpOverlapped
);
hFile : 읽을 핸들입니다.
lpBuffer : 파일에 Write할 내용을 저장할 변수입니다.
nNumberOfBytesToRead : 파일에 쓸 바이트의 수입니다.
lpNumberOfBytesRead : 실제로 쓴 바이트의 수입니다.
lpOverlapped : ?
*CloseHandle
파일을 다 사용하고 파일을 닫을때 사용합니다
이제 프로그램에서 키보드입력으로 입력받은 내용을 파일에 저장하고, 프로그램을 새로 킬때 파일에 저장한 내용을 출력하는 코드를 알아보겠습니다.
(저장)
(읽기)
소스코드
https://github.com/yhunterr/Win32/tree/main/win32_file_write_read/WindowsProject1
'프로그래밍 언어 > Win32' 카테고리의 다른 글
Win32 문자집합 설정 (0) | 2023.07.23 |
---|