c/c++ CopyFile,GetFileAttributes复制文件和更改文件属性
通过使用GetFileAttributes 或者GetFileAttributes函数能够获得文件的属性,CreateFile和SetFileAttributes函数可以设置文件的属性。
例子:
#include <windows.h> #include <tchar.h> #include <stdio.h> #include <strsafe.h> void _tmain(int argc, TCHAR* argv[]) { WIN32_FIND_DATA FileData; HANDLE hSearch; DWORD dwAttrs; TCHAR szNewPath[MAX_PATH]; BOOL fFinished = FALSE; if(argc != 2) { _tprintf(TEXT("Usage: %s <dir>\n"), argv[0]); return; } // Create a new directory. if (!CreateDirectory(argv[1], NULL)) { printf("CreateDirectory failed (%d)\n", GetLastError()); return; } // Start searching for text files in the current directory. hSearch = FindFirstFile(TEXT("*.txt"), &FileData); if (hSearch == INVALID_HANDLE_VALUE) { printf("No text files found.\n"); return; } // Copy each .TXT file to the new directory // and change it to read only, if not already. while (!fFinished) { StringCchPrintf(szNewPath, sizeof(szNewPath)/sizeof(szNewPath[0]), TEXT("%s\\%s"), argv[1], FileData.cFileName); if (CopyFile(FileData.cFileName, szNewPath, FALSE)) { dwAttrs = GetFileAttributes(FileData.cFileName); if (dwAttrs==INVALID_FILE_ATTRIBUTES) return; if (!(dwAttrs & FILE_ATTRIBUTE_READONLY)) { SetFileAttributes(szNewPath, dwAttrs | FILE_ATTRIBUTE_READONLY); } } else { printf("Could not copy file.\n"); return; } if (!FindNextFile(hSearch, &FileData)) { if (GetLastError() == ERROR_NO_MORE_FILES) { _tprintf(TEXT("Copied *.txt to %s\n"), argv[1]); fFinished = TRUE; } else { printf("Could not find next file.\n"); return; } } } // Close the search handle. FindClose(hSearch); }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。