BOOL MoveFile(
LPCTSTR lpExistingFileName, ------①
LPCTSTR lpNewFileName -----②
);
함수 설명 :
파일이나 디렉토리의 위치를 변경한다. 파일의 경우 같은 디렉토리의 다른 이름으로 변경도 가능하며 디렉토리는 포함된 모든 파일과 서브 디렉토리를 같이 이동시킨다. 위치를 옮기는 것은 원래 파일을 지우고 새 위치에 파일을 생성하는 것과 동일하지만 같은 드라이브내에서는 디스크 할당 표만 수정하고 실제 데이터는 이동하지 않아도 되므로 CopyFile 함수를 사용하는 것보다 이 함수를 사용하는 것이 훨씬 더 빠르다.
① lpExistingFileName :
위치를 변경시킬 파일 또는 디렉토리의 이름을 인수로 전달한다.
② lpNewFileName :
파일, 디렉토리 이름을 인수로 전달한다.. 새로 만들어지므로 기존에 존재해서는 안된다. 파일은 다른 드라이브에 있어도 상관없지만 디렉토리는 반드시 같은 드라이브에 있어야 한다.
----------------------------------------------------------------------------------
BOOL MoveFileEx(
LPCTSTR lpExistingFileName, -----①
LPCTSTR lpNewFileName, -----②
DWORD dwFlags -----③
);
함수 설명 :
MoveFile과 마찬가지로 파일이나 디렉토리를 다른 위치로 옮기되 세부적인 동작에 대해 몇가지 플래그를 지정할 수 있다는 점이 다르다. 특히 재부팅할 때 실제로 파일을 옮겨 주는 기능은 설치 프로그램이 이미 사용중인 DLL을 교체하는 용도로 자주 사용된다. 이 함수는 다음 부팅시 이동할 파일을 레지스트리의 다음 위치에 기록해 놓는다
성공하면 0이 아닌 값을 리턴, 실패시 0을 리턴한다.
① lpExistingFileName :
위와 동일
② lpNewFileName :
기본 내용은 동일하며, MOVEFILE_DELAY_UNTIL_REBOOT 플래그가 지정되어 있고 이 인수가 NULL이면 다음 부팅시에 파일을 삭제한다.
③ dwFlags :
파일 이동에 대한 플래그를 지정하고 조합할 수 있다.
Flag | 설명 |
MOVEFILE_COPY_ALLOWED |
파일이 다른 드라이브간에 이동될 때는 CopyFIle, DeleteFile 함수 호툴을 시뮬레이트 하도록 한다. |
MOVEFILE_CREATE_HARDLINK |
예약 ???? |
MOVEFILE_DELAY_UNTIL_REBOOT |
운영체제를 재부팅할 때까지 이동을 하지 않는다. 즉 다음번 운영체제 부팅시에 파일을 이동하도록 한다. 이 플래그는 DLL이나 실행 파일 등 공유가 걸린 파일을 교체 할 떄 주로 사용된다. 이 블래그를 쓰기 위해서는 관리자 계정으로 로그인 해야한다. |
MOVEFILE_FAIL_IF_NOT_TRACKABLE |
2000이상, 원본 파일이 링크 소스이고 이동 후에 위치를 찾을수 없을 때 실패한다. 대상 볼륨이 FAT로 포맷되어 있을 때 발생한다. |
MOVEFILE_REPLACE_EXISTING |
새 파일이 있을경우 덮어쓴다. 이 플래그는 파일에 대해서만 사용할 수 있으며 디렉토리에는 적용되지 않는다. |
MOVEFILE_WRITE_THROUGH |
파일이 실제로 완전히 이동되기 전에는 리턴하지 않느느다. 파일 이동 후 이동된 새 파일을 곧바로 사용하고자 할 때는 이 플래그르 사용한다. |
참고 : soen.kr
'Programming > Windows&C#' 카테고리의 다른 글
[Windows/WinAPI] CloseHandle, DeleteFile, RemoveDirectory (0) | 2013.10.17 |
---|---|
[Windows/WinAPI] CopyFile (0) | 2013.10.17 |
[Windows/WinAPI] WriteFile() (0) | 2013.10.15 |
[Windows/WinAPI] ReadFile() (0) | 2013.10.15 |
[Windows/WinAPI] CreateFile() (0) | 2013.10.14 |