WIN32_FIND_DATA

基本信息

编辑

关于文件的全部属性信息。总计有以下以下9种:文件的标题名、文件的属性(只读、存档,隐藏等)、文件的创建时间、文件的最后访问时间、文件的最后修改时间、文件大小的高位双字、文件大小的低位双字、保留、保留。在这里只有文件标题名和文件的长度可以通过CFile类比较方便的获得,而对于其他几种属性的获取和设置就无能为力了。

该结构的内容如下:

typedef struct _WIN32_FIND_DATA {

DWORD dwFileAttributes; //文件属性

FILETIME ftCreationTime; // 文件创建时间

FILETIME ftLastAccessTime; // 文件最后一次访问时间

FILETIME ftLastWriteTime; // 文件最后一次修改时间

DWORD nFileSizeHigh; // 文件长度高32位

DWORD nFileSizeLow; // 文件长度低32位

DWORD dwReserved0; // 系统保留

DWORD dwReserved1; // 系统保留

TCHAR cFileName[ MAX_PATH ]; // 长文件名

TCHAR cAlternateFileName[ 14 ]; // 8.3格式文件名

} WIN32_FIND_DATA, *PWIN32_FIND_DATA;

可以通过FindFirstFile()函数根据当前的文件存放路径查找该文件来把待操作文件的相关属性读取到WIN32_FIND_DATA结构中去:

WIN32_FIND_DATA ffd ;

HANDLE hFind = FindFirstFile("c:\\test.dat",&ffd);

在使用这个结构时不能手工修改这个结构中的任何数据,结构对于开发人员来说只能作为一个只读数据,其所有的成员变量都会由系统完成填写。在MSDN帮助中可以查找到关于WIN32_FIND_DATA结构的更加详细的说明。

文件属性

编辑

File Attribute Constants

File attributes are metadata values stored by the file system on disk and are used by the system and are available to developers via various file I/O APIs. For a list of related APIs and topics, see the See Also section.

Constant/value Description
  • FILE_ATTRIBUTE_ARCHIVE

    32 (0x20)


A file or directory that is an archive file or directory. Applications typically use this attribute to markfiles for backup or removal.存档类
  • FILE_ATTRIBUTE_COMPRESSED

    2048 (0x800)


A file or directory that is compressed. For a file, all of the data in the file is compressed. For a directory, compression is the default for newly created files and subdirectories.
  • FILE_ATTRIBUTE_DEVICE

    64 (0x40)


This value is reserved for system use.驱动类
  • FILE_ATTRIBUTE_DIRECTORY

    16 (0x10)


The handle that identifies a directory.目录类
  • FILE_ATTRIBUTE_ENCRYPTED

    16384 (0x4000)


A file or directory that is encrypted. For a file, all data streams in the file are encrypted. For a directory, encryption is the default for newly created files and subdirectories.
  • FILE_ATTRIBUTE_HIDDEN

    2 (0x2)


The file or directory is hidden. It is not included in an ordinary directory listing.隐藏
  • FILE_ATTRIBUTE_INTEGRITY_STREAM

    32768 (0x8000)


The directory or user data stream is configured with integrity (only supported on ReFS volumes). It is not included in an ordinary directory listing. The integrity setting persists with the file if it‘s renamed. If a file is copied the destination file will have integrity set if either the source file or destination directory have integrity set.

Windows Server2008R2, Windows7, Windows Server2008, WindowsVista, Windows Server2003, and WindowsXP:This flag is not supported until Windows Server2012.

  • FILE_ATTRIBUTE_NORMAL

    128 (0x80)


A file that does not have other attributes set. This attribute is valid only when used alone.普通
  • FILE_ATTRIBUTE_NOT_CONTENT_INDEXED

    8192 (0x2000)


The file or directory is not to be indexed by the content indexing service.
  • FILE_ATTRIBUTE_NO_SCRUB_DATA

    131072 (0x20000)


The user data stream not to be read by the background data integrity scanner (AKA scrubber). When set on a directory it only provides inheritance. This flag is only supported on Storage Spaces and ReFS volumes. It is not included in an ordinary directory listing.

Windows Server2008R2, Windows7, Windows Server2008, WindowsVista, Windows Server2003, and WindowsXP:This flag is not supported until Windows8 and Windows Server2012.

  • FILE_ATTRIBUTE_OFFLINE

    4096 (0x1000)


The data of a file is not available immediately. This attribute indicates that the file data is physically moved to offline storage. This attribute is used by Remote Storage, which is the hierarchical storage management software. Applications should not arbitrarily change this attribute.
  • FILE_ATTRIBUTE_READONLY

    1 (0x1)


A file that is read-only. Applications can read the file, but cannot write to it or delete it. This attribute is not honored on directories. For more information, see You cannot view or change the Read-only or the System attributes of folders in Windows Server 2003, in Windows XP, in Windows Vista or in Windows 7.
  • FILE_ATTRIBUTE_REPARSE_POINT

    1024 (0x400)


A file or directory that has an associated reparse point, or a file that is a symbolic link.
  • FILE_ATTRIBUTE_SPARSE_FILE

    512 (0x200)


A file that is a sparse file.
  • FILE_ATTRIBUTE_SYSTEM

    4 (0x4)


A file or directory that the operating system uses a part of, or uses exclusively.系统文件
  • FILE_ATTRIBUTE_TEMPORARY

    256 (0x100)


A file that is being used for temporary storage. File systems avoid writing data back to mass storage ifsufficient cache memory is available, because typically, an application deletes a temporary file after the handleis closed. In that scenario, the system can entirely avoid writing the data. Otherwise, the data is written afterthe handle is closed.临时文件
  • FILE_ATTRIBUTE_VIRTUAL

    65536 (0x10000)


This value is reserved for system use.虚拟文件(系统专用)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

//Cfile类属性枚举

enumAttribute{

normal=0x00,//note:notsameasFILE_ATTRIBUTE_NORMAL

readOnly=FILE_ATTRIBUTE_READONLY,

hidden=FILE_ATTRIBUTE_HIDDEN,

system=FILE_ATTRIBUTE_SYSTEM,

volume=0x08,

directory=FILE_ATTRIBUTE_DIRECTORY,

archive=FILE_ATTRIBUTE_ARCHIVE,

device=FILE_ATTRIBUTE_DEVICE,

temporary=FILE_ATTRIBUTE_TEMPORARY,

sparse=FILE_ATTRIBUTE_SPARSE_FILE,

reparsePt=FILE_ATTRIBUTE_REPARSE_POINT,

compressed=FILE_ATTRIBUTE_COMPRESSED,

offline=FILE_ATTRIBUTE_OFFLINE,

notIndexed=FILE_ATTRIBUTE_NOT_CONTENT_INDEXED,

encrypted=FILE_ATTRIBUTE_ENCRYPTED

};

时间: 2024-11-12 19:48:04

WIN32_FIND_DATA的相关文章

WIN32_FIND_DATA 循环获取文件大小BUG

今天在调试程序时发现一个 WIN32_FIND_DATA 的BUG,在循环读取一个文件夹下的图片文件时,发现结构体中 nFileSizeLow 和 nFileSizeHigh 值 == 0的情况,即能获取到文件名,但读出的文件大小为0的尴尬情况.但事实上,图片文件是正常的,大小从80K~170K的都有,比较诡异,与各位分享一下.  typedef struct _WIN32_FIND_DATAW { DWORD dwFileAttributes; FILETIME ftCreationTime;

WIN32_FIND_DATA 循环获取文件大小的BUG

今天在调试程序时发现一个 WIN32_FIND_DATA 的BUG,在循环读取一个文件夹下的图片文件时,发现结构体中 nFileSizeLow 和 nFileSizeHigh 值 == 0的情况,即能获取到文件名,但读出的文件大小为0的尴尬情况.但事实上,图片文件是正常的,大小从80K~170K的都有,比较诡异,与各位分享一下.  typedef struct _WIN32_FIND_DATAW { DWORD dwFileAttributes; FILETIME ftCreationTime;

软件保护技术--- 常见保护技巧

(1)序列号保护机制 数学算法一项都是密码加密的核心,但在一般的软件加密中,它似乎并不太为人们关心,因为大多数时候软件加密本身实现的都是一种编程的技巧.但近几年来随着序列号加密程序的普及,数学算法在软件加密中的比重似乎是越来越大了.     我们先来看看在网络上大行其道的序列号加密的工作原理.当用户从网络上下载某个shareware--共享软件后,一般都有使用时间上的限制,当过了共享软件的试用期后,你必须到这个软件的公司去注册后方能继续使用.注册过程一般是用户把自己的私人信息(一般主要指名字)连

C# 读取快捷方式指向的文件

[Flags()] public enum SLR_FLAGS { SLR_NO_UI = 0x1, SLR_ANY_MATCH = 0x2, SLR_UPDATE = 0x4, SLR_NOUPDATE = 0x8, SLR_NOSEARCH = 0x10, SLR_NOTRACK = 0x20, SLR_NOLINKINFO = 0x40, SLR_INVOKE_MSI = 0x80 } [Flags()] public enum SLGP_FLAGS { SLGP_SHORTPATH =

清理文件

#pragma once #include <vector> using std::vector; // CDlgB 对话框 class CDlgB : public CDialogEx { DECLARE_DYNAMIC(CDlgB) public: CDlgB(CWnd* pParent = NULL); // 标准构造函数 virtual ~CDlgB(); // 对话框数据 enum { IDD = IDD_DIALOG2 }; protected: virtual void DoDa

遍历文件夹

HANDLE hfile;//查找文件句柄 WIN32_FIND_DATA wfdata;//文件信息结构 BOOL IsOver=false;//查找过程结束标志 CString strname;//文件名 CString strfull;//全路径 hfile=FindFirstFile((LPCTSTR)("*.*"),&wfdata);//查找第一个文件 if(hfile==INVALID_HANDLE_VALUE) IsOver=true;//查找过程结束 while

window下遍历文件并修改

今天需要写一个遍历文件夹下的所有文件,试了试以前的方法竟然报错了.重新改了一下. #include <iostream> #include <stdlib.h> #include <windows.h> #include <fstream> #include <iterator> #include <string> #include <time.h> #include <math.h> using namesp

C杂谈

最近在做关于C的项目开发,记录一下有关C的操作,比较杂乱 1.利用System进行文件数量统计: 1) 1 system("dir /b /s /ad d:\\mydir\\*.* | find /c \":\" >d:\\ndirs.txt"); //读文件d:\\ndirs.txt的内容即d:\\mydir目录下的文件夹数 1 system("dir /b /s /a-d d:\\mydir\\*.* | find /c \":\&qu

什么时候用Model,什么时候用Entity?[转载知乎-备忘]

在建立一个实体类的时候,究竟是用Model还是用Entity?比如MVC中,Model存了数据实体,但是他被称为Model,而在EF中,Entity也是存放数据实体,却被称作Entity,这两者有何区别?那究竟什么时候应该用Model什么时候应该用Entity呢? 赵劼: 一般这种称谓都是根据上下文来的,例如Model是因为有MVC,或MVVM的场景下所以叫做Model,这里的Model就是一种职责.Entity则更接近是一种表达业务概念的实体,例如一个User,一个Order等等,而这样的实体