MFC如何获取文件夹的属性、创建时间。注意是文件夹,不是文件
MFC怎么获取文件夹的属性、创建时间。注意是文件夹,不是文件。
洒泪相问:
注意,是“文件夹”,不是“文件”哦!!!
MFC中CFile::GetStatus可以像获取文件的创建时间、修改时间、最后访问时间、属性等那样,
可是这个CFile::GetStatus可以获取到文件夹的属性和创建时间吗?注意哦,是文件夹。
我都快哭了。。。。呜呜。试了一两天了。。
下面这三种,都试了试,都不行。估计是我还是不理解它们的远离。
1.CFile::GetStatus
2.SHBrowseForFolder
3.ShellExecuteEx
一直纠结在这个小问题上,获取文件夹的属性、创建时间。菜鸟妹子都快对人生绝望了。。。呜呜。望大神解救,要是有详细源码最好了。
注意,是“文件夹”,不是“文件”哦!!!
------解决方案--------------------
搜索“shell编程取文件夹属性”
------解决方案--------------------
不知道这个行不行
http://www.yesky.com/498/1658998_2.shtml
------解决方案--------------------
DWORD GetFileAttributes(LPCTSTR lpFilename);
参数:hFileName: 输入参数,为需要获取属性的文件或目录
返回值:返回DWORD值,表示文件属性。如果返回INVALID_FILE_ATTRIBUTES,则表示失败,可使用GetLastError函数获取错误信息
使用说明:要判断文件属性,需要使用“&”与属性常量进行运算,如果运行结果为真,则表示具有这种属性
在MSDN中,文件总共有15种属性,根据磁盘的分区格式不同,文件的属性也会不同。
FILE_ATTRIBUTE_READONLY 1 只读
FILE_ATTRIBUTE_HIDDEN 2 隐藏
FILE_ATTRIBUTE_SYSTEM 4 系统
FILE_ATTRIBUTE_DIRECTORY 16 目录
FILE_ATTRIBUTE_ARCHIVE 32 存档
FILE_ATTRIBUTE_DEVICE 64 保留
FILE_ATTRIBUTE_NORMAL 128 正常
FILE_ATTRIBUTE_TEMPORARY 256 临时
FILE_ATTRIBUTE_SPARSE_FILE 512 稀疏文件
FILE_ATTRIBUTE_REPARSE_POINT 1024 超链接或快捷方式
FILE_ATTRIBUTE_COMPRESSED 2048 压缩
FILE_ATTRIBUTE_OFFLINE 4096 脱机
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 8192 索引
FILE_ATTRIBUTE_ENCRYPTED 16384 加密
FILE_ATTRIBUTE_VIRTUAL 65536 虚拟
“只读”、“隐藏”、“系统”、“存档”为文件的四种基本属性。
compressed,content_indexed,encrypted只存在于NTFS分区中。
commpressed和encrypted不能共存。默认情况下文件都有content_indexed属性。
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
注意,是“文件夹”,不是“文件”哦!!!
MFC中CFile::GetStatus可以像获取文件的创建时间、修改时间、最后访问时间、属性等那样,
可是这个CFile::GetStatus可以获取到文件夹的属性和创建时间吗?注意哦,是文件夹。
我都快哭了。。。。呜呜。试了一两天了。。
下面这三种,都试了试,都不行。估计是我还是不理解它们的远离。
1.CFile::GetStatus
2.SHBrowseForFolder
3.ShellExecuteEx
一直纠结在这个小问题上,获取文件夹的属性、创建时间。菜鸟妹子都快对人生绝望了。。。呜呜。望大神解救,要是有详细源码最好了。
注意,是“文件夹”,不是“文件”哦!!!
------解决方案--------------------
搜索“shell编程取文件夹属性”
------解决方案--------------------
不知道这个行不行
http://www.yesky.com/498/1658998_2.shtml
------解决方案--------------------
DWORD GetFileAttributes(LPCTSTR lpFilename);
参数:hFileName: 输入参数,为需要获取属性的文件或目录
返回值:返回DWORD值,表示文件属性。如果返回INVALID_FILE_ATTRIBUTES,则表示失败,可使用GetLastError函数获取错误信息
使用说明:要判断文件属性,需要使用“&”与属性常量进行运算,如果运行结果为真,则表示具有这种属性
在MSDN中,文件总共有15种属性,根据磁盘的分区格式不同,文件的属性也会不同。
FILE_ATTRIBUTE_READONLY 1 只读
FILE_ATTRIBUTE_HIDDEN 2 隐藏
FILE_ATTRIBUTE_SYSTEM 4 系统
FILE_ATTRIBUTE_DIRECTORY 16 目录
FILE_ATTRIBUTE_ARCHIVE 32 存档
FILE_ATTRIBUTE_DEVICE 64 保留
FILE_ATTRIBUTE_NORMAL 128 正常
FILE_ATTRIBUTE_TEMPORARY 256 临时
FILE_ATTRIBUTE_SPARSE_FILE 512 稀疏文件
FILE_ATTRIBUTE_REPARSE_POINT 1024 超链接或快捷方式
FILE_ATTRIBUTE_COMPRESSED 2048 压缩
FILE_ATTRIBUTE_OFFLINE 4096 脱机
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 8192 索引
FILE_ATTRIBUTE_ENCRYPTED 16384 加密
FILE_ATTRIBUTE_VIRTUAL 65536 虚拟
“只读”、“隐藏”、“系统”、“存档”为文件的四种基本属性。
compressed,content_indexed,encrypted只存在于NTFS分区中。
commpressed和encrypted不能共存。默认情况下文件都有content_indexed属性。
------解决方案--------------------
HANDLE hFile = CreateFile(GENERIC_READ
------解决方案--------------------
GENERIC_WRITE,FILE_SHARE_READ,NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile != INVALID_HANDLE_VALUE)
{
FILETIME ftCreate={0},ftLastWrite={0},ftAccess={0};
GetFileTime(hFile,&ftCreate,&ftAccess,&ftLastWrite);
}
------解决方案--------------------
HANDLE hFile = CreateFile(strFilePath,GENERIC_READ
------解决方案--------------------
GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile != INVALID_HANDLE_VALUE)
{
FILETIME ftCreate={0},ftLastWrite={0},ftAccess={0};
GetFileTime(hFile,&ftCreate,&ftAccess,&ftLastWrite);
}
------解决方案--------------------
TRY
{
//先手动创建文件夹,再用attrib +R +A +S +H F:\123命令把文件夹加上这些属性测试
CFileStatus FileStatus;
CFile::GetStatus(_T("F:\\123"), FileStatus);
//创建时间
CString cTime = FileStatus.m_ctime.Format(TEXT("%Y-%m-%d %H:%M:%S"));
//最后修改时间
CString mTime = FileStatus.m_mtime.Format(TEXT("%Y-%m-%d %H:%M:%S"));
//最后访问时间
CString aTime = FileStatus.m_atime.Format(TEXT("%Y-%m-%d %H:%M:%S"));
if (FileStatus.m_attribute&CFile::hidden)
{
::OutputDebugString(TEXT("隐藏文件\n"));
}
if (FileStatus.m_attribute&CFile::directory)
{
::OutputDebugString(TEXT("文件夹\n"));
}
if (FileStatus.m_attribute&CFile::archive)
{
::OutputDebugString(TEXT("归档\n"));
}
if (FileStatus.m_attribute&CFile::system)
{
::OutputDebugString(TEXT("系统\n"));
}
if (FileStatus.m_attribute&CFile::readOnly)
{
::OutputDebugString(TEXT("只读\n"));
}
}CATCH(CFileException, e)
{
e->ReportError();
}END_CATCH