获取和设置文件属性(1):获取和改变文件属性

类别:编程语言 点击:0 评论:0 推荐:

应用程序能够通过GetFileAttributes和GetFileAttributesEx函数来获取文件属性。CreateFile和SetFileAttributes函数能够设置大部分文件属性。然而,应用程序不能设置所有的属性。
在此用一个示例来说明问题,示例如下:
#include <windows.h>
#include <stdio.h>

void main()
{
   WIN32_FIND_DATA FileData;
   HANDLE hSearch;
   DWORD dwAttrs;  
   TCHAR szDirPath[] = TEXT("c:\\TextRO\\");
   TCHAR szNewPath[MAX_PATH];  
 
   BOOL fFinished = FALSE;
 
// 创建新目录
 
   if (!CreateDirectory(szDirPath, NULL)) //新目录使用默认安全属性
   {
      printf("Could not create new directory.\n");
      return;
   }
 
// 在当前目录开始寻找text文件
 
   hSearch = FindFirstFile(TEXT("*.txt"), &FileData);
   if (hSearch == INVALID_HANDLE_VALUE)
   {
      printf("No text files found.\n");
      return;
   }
 
// 复制.TXT 文件到新目录,并改为只读属性

 
   while (!fFinished)
   {
      lstrcpy(szNewPath, szDirPath);
      lstrcat(szNewPath, FileData.cFileName); //新目录路径名加文件名
      if (CopyFile(FileData.cFileName, szNewPath, FALSE))
      {
         dwAttrs = GetFileAttributes(FileData.cFileName);
         if( GetLastError() != 0 ) 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)
         {
            printf("Copied all text files.\n");
            fFinished = TRUE;
         }
         else
         {
            printf("Could not find next file.\n");
            return;
         }
      }
   }
 
// 关闭搜寻句柄hSearch
 
   FindClose(hSearch);
}

示例中使用CopyFile函数将一个目录中所有文本文件复制到一个新的只读文件的目录中,新目录叫\TextRO。如有必要,要将新目录中的文件属性改为只读。应用程序使用CreateDirectory函数来创建新目录。
应用程序使用FindFirstFile和FindNextFile函数在当前目录中寻找文本文件。每个文本文件均被复制到新目录\TextRO 中。文件被复制后,使用GetFileAttributes函数来判定文件是否是只读属性。如果文件不是只读属性,应用程序将使用 SetFileAttributes 函数来改变文件属性。
最后必须使用FindClose函数来关闭搜寻句柄。

本文地址:http://com.8s8s.com/it/it23731.htm