Programming/Windows&C#

[Windows/WinAPI] MoveFile() , MoveFileEx()

JMob 2013. 10. 15. 14:16
728x90
반응형

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


728x90
반응형

'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