c/c++ CopyFile,GetFileAttributes复制文件和更改文件属性

来源:互联网 发布:新闻联播p图软件 编辑:程序博客网 时间:2024/06/03 15:07

通过使用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);}

0 0