精华内容
下载资源
问答
  • 实例040获取文件属性

    2020-04-19 15:21:30
    FileAttributes 枚举 命名空间:System.IO 程序集:mscorlib.dll 提供文件和目录的属性。...每当修改文件时,Windows 会设置该属性,并且在增量备份期间处理文件时,备份软件应进行清理该属性。...

    FileAttributes 枚举

    命名空间:System.IO

    程序集:mscorlib.dll

    提供文件和目录的属性。此枚举有一个 FlagsAttribute 属性,允许按位组合成员值。

    字段

    表 1
    Archive 32

    此文件标记为包含在增量备份操作中。 每当修改文件时,Windows 会设置该属性,并且在增量备份期间处理文件时,备份软件应进行清理该属性。

    Compressed 2048

    此文件是压缩文件。

    Device 64

    留待将来使用。

    Directory 16

    此文件是一个目录。 Directory 在 Windows、Linux 和 macOS 上受支持。

    Encrypted 16384

    此文件或目录已加密。 对于文件来说,表示文件中的所有数据都是加密的。 对于目录来说,表示新创建的文件和目录在默认情况下是加密的。

    Hidden 2

    文件是隐藏的,因此没有包括在普通的目录列表中。 Hidden 在 Windows、Linux 和 macOS 上受支持。

    IntegrityStream 32768

    文件或目录包括完整性支持数据。 在此值适用于文件时,文件中的所有数据流具有完整性支持。 此值将应用于一个目录时,所有新文件和子目录在该目录中和默认情况下应包括完整性支持。

    Normal 128

    该文件是没有特殊属性的标准文件。 仅当其单独使用时,此特性才有效。 Normal 在 Windows、Linux 和 macOS 上受支持。

    NoScrubData 131072

    文件或目录从完整性扫描数据中排除。 此值将应用于一个目录时,所有新文件和子目录在该目录中和默认情况下应不包括数据完整性。

    NotContentIndexed 8192

    将不会通过操作系统的内容索引服务来索引此文件。

    Offline 4096

    此文件处于脱机状态, 文件数据不能立即供使用。

    ReadOnly 1

    文件为只读文件。 ReadOnly 在 Windows、Linux 和 macOS 上受支持。 在 Linux 和 macOS 上,更改 ReadOnly 标记是权限操作。

    ReparsePoint 1024

    文件包含一个重新分析点,它是一个与文件或目录关联的用户定义的数据块。 ReparsePoint 在 Windows、Linux 和 macOS 上受支持。

    SparseFile 512

    此文件是稀疏文件。 稀疏文件一般是数据通常为零的大文件。

    System 4

    此文件是系统文件。 即,该文件是操作系统的一部分或者由操作系统以独占方式使用。

    Temporary 256

    文件是临时文件。 临时文件包含当执行应用程序时需要的,但当应用程序完成后不需要的数据。 文件系统尝试将所有数据保存在内存中,而不是将数据刷新回大容量存储,以便可以快速访问。 当临时文件不再需要时,应用程序应立即删除它。

    Module Module1

        Sub Main()
            testAttributes()

            Console.Read()
        End Sub

        Private Sub testAttributes()
            Dim FileNames() As String
            Dim DirectoryName As String
            Dim iCount As Integer
            DirectoryName = "J:\test"
            If IO.Directory.Exists(DirectoryName) Then
                FileNames = IO.Directory.GetFiles(DirectoryName)
            End If
            For iCount = 0 To FileNames.GetLength(0) - 1
                Dim attributes As String = IO.File.GetAttributes(FileNames(iCount))

                If ((attributes And IO.FileAttributes.Hidden) = IO.FileAttributes.Hidden) Then
                    Console.WriteLine("hiden file")
                Else
                    Console.WriteLine("not hidden file")
                End If
                'Console.WriteLine("---" & FileNames(iCount) + Space(5) & Str())

            Next

        End Sub
    End Module
     

    展开全文
  • 我们知道C/C++都提供了标准的文件I/O库以便我们对文件进行...在Linux和Windows程序库下面都有一个sys目录,里面包含系统相关的头文件,如下: Windows下: C:\Program Files\Microsoft Visual Studio 9.0\VC\include\sy

    我们知道C/C++都提供了标准的文件I/O库以便我们对文件进行读写。但我们无法通过标准的I/O库对文件系统进行更进一步的操作。因为这设计到具体操作系统中文件系统的设计。在Linux和Windows程序库下面都有一个sys目录,里面包含系统相关的头文件,如下:

    Windows下:

    C:\Program Files\Microsoft Visual Studio 9.0\VC\include\sys>dir
     驱动器 C 中的卷是 wins
     卷的序列号是 6C27-6F61
     C:\Program Files\Microsoft Visual Studio 9.0\VC\include\sys 的目录
    
    2013-08-26  22:50    <DIR>          .
    2013-08-26  22:50    <DIR>          ..
    2002-05-29  04:48               997 locking.h
    2007-01-06  08:59             6,722 stat.h
    2004-01-09  22:27             1,856 stat.inl
    2007-01-06  08:59             3,139 timeb.h
    2004-03-30  06:34             1,414 timeb.inl
    2006-11-09  01:45             2,033 types.h
    2007-01-06  08:59             3,805 utime.h
    2004-11-13  22:45             2,881 utime.inl
    2006-11-09  01:45             1,917 wstat.inl
                   9 个文件         24,764 字节
                   2 个目录 11,852,636,160 可用字节

    Linux下面:

    [anonymalias@localhost ~]$ ls /usr/include/sys
    acct.h       io.h           ptrace.h     stat.h         ucontext.h
    acl.h        ipc.h          queue.h      statvfs.h      uio.h
    asoundlib.h  kdaemon.h      quota.h      swap.h         ultrasound.h
    bitypes.h    kd.h           raw.h        syscall.h      un.h
    cdefs.h      klog.h         reboot.h     sysctl.h       unistd.h
    debugreg.h   mman.h         reg.h        sysinfo.h      user.h
    dir.h        mount.h        resource.h   syslog.h       ustat.h
    epoll.h      msg.h          select.h     sysmacros.h    utsname.h
    errno.h      mtio.h         sem.h        termios.h      vfs.h
    eventfd.h    param.h        sendfile.h   timeb.h        vlimit.h
    fcntl.h      pci.h          shm.h        time.h         vt.h
    file.h       perm.h         signalfd.h   timerfd.h      vtimes.h
    fsuid.h      personality.h  signal.h     times.h        wait.h
    gmon.h       poll.h         socket.h     timex.h        xattr.h
    gmon_out.h   prctl.h        socketvar.h  ttychars.h
    inotify.h    procfs.h       soundcard.h  ttydefaults.h
    ioctl.h      profil.h       statfs.h     types.h

    我们可以看到在Windows和Linux下面的sys目录中都存在一个stat.h头文件,也是仅有的一个相同的文件。

    Linux和Windows include目录下的sys/stat.h头文件都主要描述了对文件和目录的属性信息进行读取的操作。主要是通过struct stat结构体和stat()函数来实现的。在Windows的sys/stat.h头文件中的开头有下面一段说明:

    /***
    *sys/stat.h - defines structure used by stat() and fstat()
    *       Copyright (c) Microsoft Corporation. All rights reserved.
    *Purpose:
    *       This file defines the structure used by the _stat() and _fstat()
    *       routines.
    *       [System V]
    *       [Public]
    ****/

    可以看出该头文件遵循System V标准,所以Windows下的stat结构和Linux下面的基本属性都一致,所以下面主要以Linux下符合POSIX标准的stat进行介绍。

    1 stat结构

    stat结构如下(从linux的<bits/stat.h>中截取,成员类型名有所修改,主要是删除了有些下划线):

    struct stat
    {
    	dev_t st_dev;				/* 设备编号(文件系统)*/
    	ino_t st_ino;				/* 文件索引节点的编号 */
    	mode_t st_mode;				/* 文件的类型和访问权限 */
    	nlink_t st_nlink;			/* 硬链接计数*/
    	uid_t st_uid;				/* 文件所有者的用户ID */
    	gid_t st_gid;				/* 文件所有者的组ID*/
    	dev_t st_rdev;				/* 设备编号(特殊文件) */
    	off_t st_size;				/* 文件大小(B) */
    	blksize_t st_blksize;			/* 块大小(文件系统的I/O 缓冲区大小,最佳I/O块大小)  */
    	blkcnt_t st_blocks;			/* 文件的块数*/
    	time_t st_atime;			/* 最后访问时间*/
    	time_t st_mtime;			/* 文件内容最后修改时间*/
    	time_t st_ctime				/* 文件状态最后修改时间*/
    };

    上面的rdev,st_blksizest_blocks都不属于POSIX标准,且后面两个不存在与Windows的头文件中。

    其中我们最常使用的属性有以下两个字段:st_mode和st_size。其中通过st_mode字段可以判断文件的类型:普通文件,目录,管道文件等。st_size用了查看一个文件的大小。

    关于文件类型和访问权限字段st_mode使用位来标识每一种属性,该字段是一个16位的整数,Linux下,对于该字段的值在<sys/stat.h><bits/stat.h>中进行了定义,主要有以下属性:

    /* Encoding of the file mode.  */
    
    //掩码值都是8进制整数(即最高位0标识8进制),16位整数需要6位8进制数, 掩
    //码值用到的位数为:0177777
    
    #define S_IFMT        0170000 /* 高4位标识文件类型 */
    
    /* File types.  */
    #define S_IFDIR       0040000 /* 目录  */
    #define S_IFCHR       0020000 /* 字符设备文件  */
    #define S_IFREG       0100000 /* 普通文件  */
    #define S_IFIFO       0010000 /* FIFO文件 */
    #define S_IFBLK       0060000 /* 块设备文件  */
    #define S_IFLNK       0120000 /* 符号链接文件  */
    #define S_IFSOCK      0140000 /* socket文件  */
    
    /* Protection bits.  */
    #define S_ISUID       04000   /* Set user ID on execution.  */
    #define S_ISGID       02000   /* Set group ID on execution.  */
    #define S_ISVTX       01000   /* Save swapped text after use (sticky).  */
    #define S_IREAD       0400    /* Read by owner.  */
    #define S_IWRITE      0200    /* Write by owner.  */
    #define S_IEXEC       0100    /* Execute by owner.  */
    
    #define S_IRUSR S_IREAD       /* Read by owner.  */
    #define S_IWUSR S_IWRITE      /* Write by owner.  */
    #define S_IXUSR S_IEXEC       /* Execute by owner.  */
    /* Read, write, and execute by owner.  */
    #define S_IRWXU (__S_IREAD|__S_IWRITE|__S_IEXEC)
    
    #define S_IRGRP (S_IRUSR >> 3)  /* Read by group.  */
    #define S_IWGRP (S_IWUSR >> 3)  /* Write by group.  */
    #define S_IXGRP (S_IXUSR >> 3)  /* Execute by group.  */
    /* Read, write, and execute by group.  */
    #define S_IRWXG (S_IRWXU >> 3)
    
    #define S_IROTH (S_IRGRP >> 3)  /* Read by others.  */
    #define S_IWOTH (S_IWGRP >> 3)  /* Write by others.  */
    #define S_IXOTH (S_IXGRP >> 3)  /* Execute by others.  */
    /* Read, write, and execute by others.  */
    #define S_IRWXO (S_IRWXG >> 3)

    在Windows下面只定义了上面的一部分,其中上面数值常量是8进制,这里是16进制:

    #define _S_IFMT         0xF000          /* file type mask */
    #define _S_IFDIR        0x4000          /* directory */
    #define _S_IFCHR        0x2000          /* character special */
    #define _S_IFIFO        0x1000          /* pipe */
    #define _S_IFREG        0x8000          /* regular */
    #define _S_IREAD        0x0100          /* read permission, owner */
    #define _S_IWRITE       0x0080          /* write permission, owner */
    #define _S_IEXEC        0x0040          /* execute/search permission, owner */

    st_mode是stat最常用的字段,其中Linux下sys/stat.h中还定义了如下判断文件类型的宏:

    /* Test macros for file types.  */
    
    #define __S_ISTYPE(mode, mask)  (((mode) & __S_IFMT) == (mask))
    
    #define S_ISDIR(mode)    __S_ISTYPE((mode), __S_IFDIR)
    #define S_ISCHR(mode)    __S_ISTYPE((mode), __S_IFCHR)
    #define S_ISBLK(mode)    __S_ISTYPE((mode), __S_IFBLK)
    #define S_ISREG(mode)    __S_ISTYPE((mode), __S_IFREG)
    #ifdef __S_IFIFO
    # define S_ISFIFO(mode)  __S_ISTYPE((mode), __S_IFIFO)
    #endif
    #ifdef __S_IFLNK
    # define S_ISLNK(mode)   __S_ISTYPE((mode), __S_IFLNK)
    #endif
    
    #if defined __USE_BSD && !defined __S_IFLNK
    # define S_ISLNK(mode)  0
    #endif
    
    #if (defined __USE_BSD || defined __USE_UNIX98 || defined __USE_XOPEN2K) && defined __S_IFSOCK
    # define S_ISSOCK(mode) __S_ISTYPE((mode), __S_IFSOCK)
    #elif defined __USE_XOPEN2K
    # define S_ISSOCK(mode) 0
    #endif

    2 stat函数

    在linux的<sys/stat.h>文件中存在如下的三个函数,这三个函数都是用于查看一个文件的文件的属性信息,其中stat()和fstat()函数在Windows的头文件也进行了定义:

    #include <sys/stat.h>
    int stat(const char *path, struct stat *buf);
    int fstat(int fd, struct stat *buf);
    int lstat(const char *path, struct stat *buf);
    				//成功返回0, 出错返回-1

    stat函数返回一个文件的属性信息,fstat返回一个已在fd文件描述符打开的文件的属性信息。lstat是Linux下特有的,返回符合链接文件的信息,而不是所链接文件的信息。

    下面一段文字是摘自维基百科关于文件描述符的介绍:”文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于UNIX、Linux这样的操作系统。”

    下面一段代码是对stat的测试,在Windows和Linux下都可以运行:

    #include <iostream>
    #include <string>
    #include <ctime>
    
    #include <sys/stat.h>
    
    using namespace std;
    
    void printStat(struct stat *statBuf)
    {
    	if(statBuf == NULL)
    		return;
    
    	cout<<"stat.st_dev:"<<statBuf->st_dev<<endl;
    	cout<<"stat.st_ino:"<<statBuf->st_ino<<endl;
    	cout<<"stat.st_mode:"<<statBuf->st_mode<<endl;
    	cout<<"stat.st_nlink:"<<statBuf->st_nlink<<endl;
    	cout<<"stat.st_uid:"<<statBuf->st_uid<<endl;
    	cout<<"stat.st_gid:"<<statBuf->st_gid<<endl;
    	cout<<"stat.st_rdev:"<<statBuf->st_rdev<<endl;
    	cout<<"stat.st_size:"<<statBuf->st_size<<endl;
    	cout<<"stat.st_atime:"<<ctime(&statBuf->st_atime);
    	cout<<"stat.st_ctime:"<<ctime(&statBuf->st_ctime);
    	cout<<"stat.st_mtime:"<<ctime(&statBuf->st_mtime);
    }
    
    int main()
    {
    	struct stat fileInfoBuf;
    	string fileName;
    
    	while(1)
    	{
    		cout<<"please input the file path:";
    		cin>>fileName;
    
    		if(stat(fileName.c_str(), &fileInfoBuf) < 0)
    		{
    			cout<<"cann't get the information of file "<<fileName<<endl;
    			continue;
    		}
    	
    		printStat(&fileInfoBuf);
    	}
    
    	return 0;
    }
    

    3 Linux目录读取

    目录的读取操作设计到具体的系统实现,C和C++都没有这方面的标准库。Windows和Linux下对目录的操作都不一样。Linux下面提供了下面的函数来进行目录的读取操作,其中前面三个是最常用的:

    #include <dirent.h>
    DIR *opendir(const char *name);
    struct dirent *readdir(DIR *dirp);
    			//成功返回指针,失败返回NULL
    int closedir(DIR *dirp);
    			//成功返回0,失败返回-1
    void rewinddir(DIR *dirp);
    void seekdir(DIR *dirp, long offset);
    long telldir(DIR *dirp);
    			//成功返回当前条目的位置,失败返回-1

    opendir()用于打开一个目录,如果打开成功则会返回一个DIR指针,该指针指向已打开的目录流。该目录流被定位到该目录的第一个条目。如果失败这返回NULL。

    readdir()用于读取已打开目录中的条目。如果读取成功则返回一个dirent结构指针,该结构保存的是目录流所定位的目录中第n个条目的内容信息,并使DIR指针指向下一个目录条目。如果目录读取完毕或者出错返回NULL。

    rewinddir()用于将DIR指针重新定位到目录的第一个条目。

    seekdir()用于设置DIR所指向的目录流的位置,以提供给readdir()使用。Offset参数一般是根据telldir()获得的。

    telldir()返回当前DIR指向目录流所在的位置,该位置是相对于目录的第一个条目而言的。

    closedir()用于关闭DIR指针所关联的目录流,即关闭打开的目录。执行该函数后DIR所指向的结构将失效。

    dirent的结构定义如下:

    #include <bits/dirent.h>
    struct dirent {
    	ino_t d_ino;	/* inode number */
    	off_t d_off;	/* offset to the next dirent */
    	unsigned short d_reclen; /* length of this record */
    	unsigned char  d_type;   /* type of file; not supported by all file system types */
    	char d_name[256];	 /* filename */
    };

    其中d_inod_name字段是POSIX标准所规定必须定义的字段。其中d_type字段的取值有如下:

    #include <dirent.h> 
    DT_BLK      This is a block device.
    DT_CHR      This is a character device.
    DT_DIR      This is a directory.
    DT_FIFO     This is a named pipe (FIFO).
    DT_LNK      This is a symbolic link.
    DT_REG      This is a regular file.
    DT_SOCK     This is a Unix domain socket.
    DT_UNKNOWN  The file type is unknown.

    下面是测试代码,遍历指定目录下的文件名:

    #include <iostream>
    #include <cstring>
    
    #include <dirent.h>
    
    using namespace std;
    
    void FileHandle(string filePath)
    {
    	cout<<filePath<<endl;
    }
    
    int DirProcess(string dirPath)
    {
    	DIR *pDir;
    	struct dirent *pDirent;
    
    	pDir = opendir(dirPath.c_str());
    	if(pDir == NULL)
    	{
    		cout<<dirPath<<" is not directory..."<<endl;
    		return -1;
    	}
    
    	while((pDirent = readdir(pDir)) != NULL)
    	{
    		//ignore the hidden directory "." & ".."
    		if(strcmp(pDirent->d_name, ".") == 0 || strcmp(pDirent->d_name, "..") == 0)
    			continue;
    
    		//judge the directory entry is a directory or not
    		if(pDirent->d_type == DT_DIR)
    		{//recursive process the directory
    			DirProcess(dirPath + '/' + pDirent->d_name);
    		}
    		else
    		{
    			 FileHandle(dirPath + '/' + pDirent->d_name);
    		}
    	}
    
    	closedir(pDir);
    
    	return 0;
    }
    
    int main(int argc, char **argv)
    {
    	if(argc == 1)
    	{
    		cout<<".:"<<endl;
    		DirProcess(string("."));
    	}
    	else
    	{
    		for(int i = 1; i < argc; ++i)
    		{
    			cout<<argv[i]<<":"<<endl;
    			DirProcess(string(argv[i]));
    		}
    	}
    }

    4 Windows目录读取

    Windows下面的目录读取,底层的操作需要用到下面三个函数:

    #include <io.h>
    long _findfirst( char *filespec, struct _finddata_t *fileinfo );
    int _findnext(long handle, struct _finddata_t *fileinfo);
    int _findclose(long handle);

    下面先介绍需要使用到的数据结构_finddata_t,该数据结构用于存储文件的相关信息。它的定义如下:

    #include <io.h>
    struct _finddata_t {
            unsigned    attrib; /*文件的属性字段,下面详细介绍*/
            __time32_t  time_create;	/* -1 for FAT file systems */
            __time32_t  time_access;	/* -1 for FAT file systems */
            __time32_t  time_write;
            _fsize_t    size;		/*文件的大小*/
            char        name[260];		/*文件名*/
    };

    其中attrib字段用于标识文件的属性,用位来进行标识,具体的值对应的属性如下:

    /* File attribute constants for _findfirst() */
    #define _A_NORMAL       0x00    /* Normal file - No read/write restrictions */
    #define _A_RDONLY       0x01    /* Read only file */
    #define _A_HIDDEN       0x02    /* Hidden file */
    #define _A_SYSTEM       0x04    /* System file */
    #define _A_SUBDIR       0x10    /* Subdirectory */
    #define _A_ARCH         0x20    /* Archive file */

    可以看出来,_finddata_t数据结构的元素除了name字段外,在stat数据结构中都存在。_finddata_t结构相对简单,是专门用来进行文件搜索使用的数据结构,匹配文件搜索的函数使用(_findfirst, _findnext, _findclose)。

    下面将详细介绍上面三个函数:

    _findfirst()用于搜索与指定的文件名称匹配的第一个实例,若成功则返回第一个实例的句柄,否则返回-1L。文件名filespec可以包含通配符:’*’(任意多个字符)和’?’(任意一个字符)。使用方式可以如下:

    struct _finddata_t fileInfo;
    _findfirst(“./*”), &fileInfo)) 		//搜索当前目录下的所有文件
    _findfirst(“./*.txt”), &fileInfo)) 	//搜索当前目录下的所有txt文件

    _findnext()用于搜索与_findfirst()函数提供的文件名称匹配的下一个实例,若成功则返回0,否则返回-1。

    _findclose()用于关闭指定搜索句柄并释放关联的资源。

    下面是测试代码,遍历指定目录下的文件名:

    #include <iostream>
    #include <cstring>
    #include <string>
    #include <vector>
    
    #include <io.h>
    
    using namespace std;
    
    void FileHandle(string filePath)
    {
    	cout<<filePath<<endl;
    }
    
    int DirProcess(string dirPath)
    {
    	long handle;
    	struct _finddata_t fileInfo;
    	
    	dirPath += "/*";
    	
    	if ((handle = _findfirst(dirPath.c_str(), &fileInfo)) == -1)
    	{
    		cout<<dirPath<<" is not directory..."<<endl;
    		return -1;
    	}
    
    	do 
    	{
    		//ignore the hidden directory "." & ".."
    		if(strcmp(fileInfo.name, ".") == 0 || strcmp(fileInfo.name, "..") == 0)
    			continue;
    
    		if (fileInfo.attrib & _A_SUBDIR)
    		{//is a directory
    			DirProcess(string(fileInfo.name));
    		}
    		else
    		{//is a normal file
    			FileHandle(string(fileInfo.name));
    		}
    	} while (_findnext(handle, &fileInfo) == 0);
    
    	_findclose(handle);
    
    	return 0;
    }
    
    int main(int argc, char **argv)
    {
    	if(argc == 1)
    	{
    		cout<<".:"<<endl;
    		DirProcess(string("."));
    	}
    	else
    	{
    		for(int i = 1; i < argc; ++i)
    		{
    			cout<<argv[i]<<":"<<endl;
    			DirProcess(string(argv[i]));
    		}
    	}
    
    	system("pause");
    }

    5 低级文件操作

    Windows下面<io.h>文件中定义了一些低级的文件操作和I/O函数。这些函数都是符合POSIX标准的,所以和Linux的同名函数功能上都是相似的。下面是<io.h>中的主要定义的函数:

    int access(const char * _Filename, int _AccessMode);
    int chmod(const char * _Filename, int _AccessMode);
    int chsize(int _FileHandle, long _Size);
    int close(int _FileHandle);
    int creat(const char * _Filename, int _PermissionMode);
    int dup(int _FileHandle);
    int dup2(int _FileHandleSrc, int _FileHandleDst);
    int eof(int _FileHandle);
    long filelength( int _FileHandle);
    int isatty(int _FileHandle);
    int locking(int _FileHandle, int _LockMode, long _NumOfBytes);
    long lseek(int _FileHandle, long _Offset, int _Origin);
    char * mktemp(char * _TemplateName);
    int open(const char * _Filename, int _OpenFlag, ...);
    int read(int _FileHandle, void * _DstBuf, unsigned int _MaxCharCount);
    int setmode(int _FileHandle, int _Mode);
    int sopen(const char * _Filename,int _OpenFlag, int _ShareFlag, ...);
    long tell(int _FileHandle);
    int umask(int _Mode);
    int write(int _Filehandle, const void * _Buf, unsigned int _MaxCharCount);
    

    Create Time:Nov. 30, 2013

    Last Modified Date:Nov. 30, 2013

    展开全文
  • 调用Windows属性窗口

    2016-07-04 18:19:00
    属性,来查看文件/文件夹对应的属性信息,包括:常规、安全、详细信息等。 简述 共有类型 共有类型 首先,需要包含头文件: #include <windows.h> 然后,通过Win API来执行调用。 ...

    简述

    在Windows系统下。可以通过:右键 -> 属性,来查看文件/文件夹对应的属性信息,包括:常规、安全、详细信息等。

    共有类型

    这里写图片描述

    首先,需要包含头文件:

    #include <windows.h>

    然后,通过Win API来执行调用。

    SHELLEXECUTEINFO ShExecInfo = {0};
    
    ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
    ShExecInfo.fMask = SEE_MASK_INVOKEIDLIST ;
    
    ShExecInfo.lpVerb = L"properties";
    ShExecInfo.lpFile = L"C:\\Windows\\regedit.exe ";
    ShExecInfo.lpParameters = L"";
    ShExecInfo.lpDirectory = NULL;
    ShExecInfo.nShow = SW_SHOW;
    ShExecInfo.hInstApp = NULL;
    ShellExecuteEx(&ShExecInfo);

    当然,也可以通过获取文件信息的方式,自定义窗体,将所需的信息显示在窗体上。

    展开全文
  • 修改文件时间属性

    2014-08-15 07:59:09
    属性windows桌面工具。所有功能集成在同一界面实现,易于操作和使用。 而且它是一款绿色软件,无需安装,即可使用,小巧实用,不写任何注册表信息。 二、软件用途、功能: 1、显示文件或文件夹的时间属性(创建...
  • 有的时候,会想要查看自己Windows系统下某个文件夹下所有文件的情况(比如,磁盘满了,想挑几个大文件删删...),用PowerBI就可以简单实现这个功能。 打开PowerBI桌面版,点击Get Data, 选择Folder选项,点击Connect...

    有的时候,会想要查看自己Windows系统下某个文件夹下所有文件的情况(比如,磁盘满了,想挑几个大文件删删...),用PowerBI就可以简单实现这个功能。

    打开PowerBI桌面版,点击Get Data, 选择Folder选项,点击Connect:

    选择一个Folder后确认选择:就可以得到下面的数据,之后点击Edit进入Query的编辑模式:

    点击Attribute这一列可以看到更多的Metadata没有在默认的view里显示出来

    因为我比较关注Size和Readonly状态这两个选项,所以选择显示这两列:

    之后点击Close and Apply,回到生成报表页面,选择Tablel类型报表:

    这样就可以生成关于一个文件夹下所有文件的属性信息报表了,可以选择将这个报表导出成一个excel文件。

    展开全文
  • caffe工程的环境配置,(win10,vs2013) 按照caffe的配置方式配置cuda 的caffe后,如何在caffe中应用的环境。首先需要在当前的工程先包含caffe 的依赖dll。...属性页和caffe依赖dll文件见。点击打开链接
  • 1.打开组策略编辑器,运行gpedit.msc 2.找到“用户配置”-“管理模板”-“Windows 组件”-“附件...5.(可选,用于关闭文件属性的警告)文件附件值中不保留区域信息,设置为“启用” http://www.cnblogs.com/green...
  • 修改文件时间属性这是一个用来修改文件或文件夹时间属性(创建时间、修改时间、访问时间)和只读、隐藏属性windows桌面工具。 修改文件时间属性软件用途、功能: 1、显示文件或文件夹的时间属性(创建时间、...
  • Windows平台可执行文件(exe文件属性中会有版本信息,包含文件说明、文件版本、版权等信息。但如何通过外部程序修改这些信息呢?当然通过一些第三方工具已经实现了这些功能,但这不是本文讨论的主题,本文是将设置...
  • windos 系统文件包含

    2019-10-03 01:49:07
    解决VS2013找不到windows.h文件方法 右键属性管理器添加 包含路径(依据sdk安装目录,我的是64位系统) C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include 设置library directories ,添加(依据...
  •  Linux文件或目录的属性主要包含以下内容:节点、种类、权限模式、链接数量、所属用户,所属组、最近访问 或修改时间。如下图: 我们以下面的一个查询为例,来进行说明,ls -lih 2093387 -rwxrwxrwx 1 ...
  • 6. 实现了文件、文件夹属性的查看; 7.实现了对当前计算机的进程、线程简单管理功能; 8. 实现了在当前路径下“返回上一级目录”的功能; 9. 实现了在主窗体上方地址栏直接输入文件路径,然后直接回车查看该路径...
  • bin文件夹:包含debug子目录,含有.exe可执行文件和pdb文件,其中pdb文件包含完整的调试信息(包含函数原型);...此文件包含程序集属性的设置。 Resources文件夹:包含项目所需要的资源文件。 Program.c...
  • 3.程序支持文件显示或者隐藏过滤功能,支持按照文件属性,目录名或者文件名等多种匹配条件来控制是否显示或者隐藏! 4.在文件管理窗口的标题栏,程序设置了5个快捷按钮,功能分别是回到刚刚浏览的前一个文件夹,回到刚刚...
  • 指定一个文件夹下,包含下载文件和上传文件; 在传输的过程中 2.将需要上传的文件放到upload文件夹下; 3.xshell创建会话,连接linux,将上传的文件放到需要的某个文件夹下。 ...
  • Windows上基于windows.h的文件操作

    千次阅读 2018-08-13 17:00:52
    1._lcreat 函数创建文件 1.1 函数原型: ...lpPathName:文件的名称,该字符串必须包含Windows ANSI字符集中的字符。 iAttribute:文件属性: 值 含义 0 正常。可以读取或写入。 ...
  • 1)在项目->属性->C/C++->附加包含目录里包含了 lua所有.h .c的文件夹 2)在项目->属性->连接器->常规->附加库目录里包含了lua.lib的文件夹 3)在项目->属性->连接器->输入->附加依赖项里输入了lua.lib ...
  • windows 特殊文件后缀集合

    千次阅读 2010-12-13 10:34:00
    它的后缀是".library-ms",位置是在 "%appdata%Microsoft/Windows/Libraries",在资源管理器里面,它们看起来就像是文件夹,不过右键属性中比常规文件夹多一个“库”的选项卡,在这里可以增删包含文件夹和是否...
  • 今天在建的silverlight项目中的测试主页里面加图片背景,结果出现了这个错误:项目文件必须在引用列表中包含.net framework 程序集“WindowsBase,PresentationCore,PresentationFramework”。其实这个问题的处理很...
  • 详细错误: 项目文件必须在引用列表中包含.net framework 程序集“WindowsBase,PresentationCore,PresentationFramework”。错误处理! 解决方法:打开使用的图片属性------生成操作->改为Resource。
  • windows cmd 命令行统计文件个数

    万次阅读 2018-07-18 12:04:01
    dir /a-d /a是显示具有指定属性文件。d是目录,-d就是去掉目录 | 通道符,把dir /b的输出当中后面find的输入 find /v 显示所有未包含指定字符串的行。 /c 仅显示包含字符串的行数 "" 特殊字符,一般文件...
  • 使用Python删除Windows中只读文件

    千次阅读 2013-04-22 16:49:08
    Windows中,删除只读文件有两种方法: 1. 修改只读属性,再删除: os.chmod( filename, stat.S_IWRITE ) os.remove(filename) 2. 使用命令行: os.system("DEL filename /F") 但是在Linux和Mac中,文件的...
  • Windows 8 Metro Style App中文件操作都包含Windows.Storage命名空间中,其中包括StorageFolder,StorageFile,FileIO等类库。 文件对象用StorageFile实现,文件头用StorageFolder实现,下面看下具体的用法及各类库...
  • forfiles是windows自带的一个批量删除命令,对于时间的判断是通过文件自身的修改日期属性进行判断,使用它来对历史文件进行判断删除是个不错的选择。 示例 1.查看“d:\backup\data”目录下名称包含“--”,且修改...
  • 附加包含目录 2、添加静态库所在目录:项目属性--->配置属性--->链接器--->常规--->附加库目录 3、添加静态库:项目属性--->配置属性--->链接器--->输入--->附加依赖项 windows平台下...
  • 上传的是一个完整的VS2008工程,而不仅仅是在windows平台下编译好的superLU4.3库文件。用的是官方给出的测试文件。 注意: 配置属性->链接器->输入:附加依赖项--superLU.lib CBLAS.lib 配置属性->链接器->常规:...
  • 当用户访问一个网站时,输入域名然后直接进入的目录即为主目录,他至少包含默认的首页文件,一般网站的文件均放在些目录下面,当然这也有例外的。 假设apache_2.2.8安装目录为:[quote]D:\Program Files\Apache ...
  • Windows PowerShell 2.0创建调用脚本文件

    千次阅读 2010-11-30 01:20:00
    在PowerShell中不存在文件和目录的概念,涉及文件和目录的操作总是转换为项(item)处理,即Get-Item、Get-ChildItem和... 项是包含内容的属性对象,这些对象又可以包含其他项。这个定义可以很容易扩展到文件和目录,即
  • 删除windows目录中所占空间为0的文件

    千次阅读 2018-09-19 16:48:42
    windows系统下,winrar包中文件名中最多可包含64字符,在用winrar解压xxx.tar.gz包时,若包中有些文件名过长,则winrar可能会截断其文件名,且发现这些被截断的文件属性大小及占用空间为0字节,又无法删除这些文件。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,501
精华内容 600
热门标签
关键字:

windows文件属性包含