|
重命名和移动文件文件有两个函数:
MoveFile() 和其扩展 MoveFileEx(),它们的原型如下:BOOL WINAPI MoveFile(
__in LPCTSTR lpExistingFileName,
__in LPCTSTR lpNewFileName
);
BOOL WINAPI MoveFileEx(
__in LPCTSTR lpExistingFileName,
__in_opt LPCTSTR lpNewFileName,
__in DWORD dwFlags
); 在 MoveFile() 中,第 1 个参数表示已经存在的且要重命名的文件,第 2 个参数表示重命名后的名字。比如:MoveFile ((LPCTSTR)_T("123.txt"), (LPCTSTR)_T("1234.txt")); 将当前目录下的 123.txt 重命名为 1234.txt 。
又如:MoveFile ((LPCTSTR)_T("D:\\1234.txt"), (LPCTSTR)_T("C:\\12345.txt")); 将 D 盘下的 1234.txt 移到 C 盘下并命名为 12345.txt 。如果只是移动的话,那就写成 C:\\12345.txt,但不能只写成 C:\\ 。此外,需要注意的是新文件可以位于不同的文件系统或驱动器中,但新目录必须在同一个驱动器中。
如果新文件已经存在的话,MoveFile() 就会失败,此时可用 MoveFileEx() 来覆盖现有文件。对 MoveFileEx() 第 3 个参数 dwFlags 几个选项说明如下:
1. MOVEFILE_REPLACE_EXISTING
使用这个选项可以替换掉现有文件。
2. MOVEFILE_WRITE_THROUGH
使用该选项可以确保函数在复制的文件尚未刷新(flush)到磁盘上之前不返回 --- 这种行为就是 write through (通写) 。
3. MOVEFILE_COPY_ALLOWED
当新文件位于不同的卷时(不同的盘中),该选项模拟先通过 CopyFile 复制文件,然后再 DeleteFile 掉原文件来完成操作。
4. MOVEFILE_DELAY_UNTIL_REBOOT
该选项不能和 MOVEFILE_COPY_ALLOWED 一起使用,且它仅限于有管理员权限的进程使用,它确保只有在 Windows 重启之后文件移动才生效。此外,如果新文件名为空,那么当 Windows 重启后现有文件会被删除。 |
|