如何获取文件名,创建时间,路径?

xixia07m 2017-05-19 09:36:58
如何在List control控件中显示某个目录下及子目录下的指定类型的文件名、创建时间、路径?多谢指点。
...全文
303 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xixia07m 2017-05-23
  • 打赏
  • 举报
回复
引用
WinExec("cmd /c dir /tw /o-d d:\\mydir\\*.* >d:\\files.txt",SW_HIDE); //然后读文件d:\files.txt的内容 WinExec("cmd /c dir /b /s /o-d d:\\mydir\\*.* >d:\\allfiles.txt",SW_HIDE); //然后读文件d:\allfiles.txt的内容
这两句代码加在程序的什么地方?
xixia07m 2017-05-23
  • 打赏
  • 举报
回复
引用
这两句加在上面程序的什么位置?
赵4老师 2017-05-23
  • 打赏
  • 举报
回复
WinExec("cmd /c dir /tw /o-d d:\\mydir\\*.* >d:\\files.txt",SW_HIDE);
//然后读文件d:\files.txt的内容
WinExec("cmd /c dir /b /s /o-d d:\\mydir\\*.* >d:\\allfiles.txt",SW_HIDE);
//然后读文件d:\allfiles.txt的内容
xixia07m 2017-05-23
  • 打赏
  • 举报
回复
请问4楼的同事,你的这个程序是截取的一段吧?是不是应该还有些头文件什么的?能否贴上来看看呢?或者说我要看懂你这个程序,我还应该看哪些资料。多谢。
starytx 2017-05-19
  • 打赏
  • 举报
回复
引用 3 楼 starytx 的回复:
可以这样获取到指定后缀的文件信息,仅供参考:

#include <vector>
// 文件信息结构体
struct FIleInfo
{
	std::wstring szFileName;
	std::wstring szFilePath;
	std::wstring szCreateTime;
};

// 递归遍历所有文件
void find(LPCTSTR lpPath, std::vector<FIleInfo> &fileList)
{
	std::wstring szFind(lpPath);
	WIN32_FIND_DATA FindFileData;

	szFind += _T("\\*.*");
	HANDLE hFind = ::FindFirstFile(szFind.c_str(), &FindFileData);
	if (INVALID_HANDLE_VALUE == hFind)    return;

	while (1)
	{
		if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
		{
			if (FindFileData.cFileName[0] != '.')
			{
				std::wstring szPath(lpPath);
				szPath += _T("\\");
				szPath += FindFileData.cFileName;
				find(szPath.c_str(), fileList );
			}
		}
		else
		{
			std::wstring strFileName = FindFileData.cFileName;  // 文件名
			std::wstring suffixStr = strFileName.substr(strFileName.find_last_of('.') + 1);
			if (suffixStr == _T("txt"))		// 根据后缀选出自己感兴趣的文件,比如 txt文件,注意大小写,如果想不区分大小写,需要自己统一转化为大写或小写然后比较
			{
				FILETIME ft = FindFileData.ftCreationTime;		// 取得创建时间
				SYSTEMTIME st = { 0 };
				TCHAR buf[64] = { 0 };
				FileTimeToSystemTime(&ft, &st);
				swprintf_s(buf, _T("%4d年-%02d月-%02d日 %02d:%02d:%02d"), st.wYear, st.wMonth, st.wDay, st.wHour+8 /*北京时间*/, st.wMinute ,st.wSecond);
				std::wstring strFilePath = lpPath;
				strFilePath += _T("\\");
				strFilePath += FindFileData.cFileName;	 // 文件全路径名

				FIleInfo fi;
				fi.szFileName = strFileName;
				fi.szFilePath = strFilePath;
				fi.szCreateTime = buf;
				fileList.push_back(fi);
			}
		}
		if (!FindNextFile(hFind, &FindFileData))    break;
	}
	FindClose(hFind);
}

int _tmain(int argc, _TCHAR* argv[])
{
	std::vector<FIleInfo> fileList;
	find(_T("D:\\xsmposc\\XSMPos"), fileList);  // 取得文件信息,可自行插入列表框
	
	return 0;
}
修正一下: FileTimeToLocalFileTime(&(FindFileData.ftCreationTime), &ft); // 转换成本地时间 FileTimeToSystemTime(&ft, &st); // 这句之前加上上一句,就不用在小时那里+8了
kakabulusi 2017-05-19
  • 打赏
  • 举报
回复
观摩一下,有一定的参考价值
starytx 2017-05-19
  • 打赏
  • 举报
回复
可以这样获取到指定后缀的文件信息,仅供参考:

#include <vector>
// 文件信息结构体
struct FIleInfo
{
	std::wstring szFileName;
	std::wstring szFilePath;
	std::wstring szCreateTime;
};

// 递归遍历所有文件
void find(LPCTSTR lpPath, std::vector<FIleInfo> &fileList)
{
	std::wstring szFind(lpPath);
	WIN32_FIND_DATA FindFileData;

	szFind += _T("\\*.*");
	HANDLE hFind = ::FindFirstFile(szFind.c_str(), &FindFileData);
	if (INVALID_HANDLE_VALUE == hFind)    return;

	while (1)
	{
		if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
		{
			if (FindFileData.cFileName[0] != '.')
			{
				std::wstring szPath(lpPath);
				szPath += _T("\\");
				szPath += FindFileData.cFileName;
				find(szPath.c_str(), fileList );
			}
		}
		else
		{
			std::wstring strFileName = FindFileData.cFileName;  // 文件名
			std::wstring suffixStr = strFileName.substr(strFileName.find_last_of('.') + 1);
			if (suffixStr == _T("txt"))		// 根据后缀选出自己感兴趣的文件,比如 txt文件,注意大小写,如果想不区分大小写,需要自己统一转化为大写或小写然后比较
			{
				FILETIME ft = FindFileData.ftCreationTime;		// 取得创建时间
				SYSTEMTIME st = { 0 };
				TCHAR buf[64] = { 0 };
				FileTimeToSystemTime(&ft, &st);
				swprintf_s(buf, _T("%4d年-%02d月-%02d日 %02d:%02d:%02d"), st.wYear, st.wMonth, st.wDay, st.wHour+8 /*北京时间*/, st.wMinute ,st.wSecond);
				std::wstring strFilePath = lpPath;
				strFilePath += _T("\\");
				strFilePath += FindFileData.cFileName;	 // 文件全路径名

				FIleInfo fi;
				fi.szFileName = strFileName;
				fi.szFilePath = strFilePath;
				fi.szCreateTime = buf;
				fileList.push_back(fi);
			}
		}
		if (!FindNextFile(hFind, &FindFileData))    break;
	}
	FindClose(hFind);
}

int _tmain(int argc, _TCHAR* argv[])
{
	std::vector<FIleInfo> fileList;
	find(_T("D:\\xsmposc\\XSMPos"), fileList);  // 取得文件信息,可自行插入列表框
	
	return 0;
}
oyljerry 2017-05-19
  • 打赏
  • 举报
回复
http://www.bubuko.com/infodetail-1320943.html
worldy 2017-05-19
  • 打赏
  • 举报
回复
fFindFirst、FindNext遍历目录创建List
1.linux系统介绍 以windows为内核的操作系统有哪些:win10   win8   win7  xp  系统    windows server 以linux为内核的操作系统有哪些:centos  ubuntu  debian   windows和linux  linux:服务器   安全    稳定 高效    windows:办公  家用  2.安装linux注意事项 对centos系统 的基本使用   有哪些文件夹   对文件/文件夹 进行操作  创建 删除  修改 移动 复制   写入 home 存放所有用户文件的根目录  soft :安装软件 cd  ll mkdir 创建文件  touch 空文件  echo sdsd>a.txt       vi a.txt vi c.txt  打开文件  按下i键  改为写入的模式    写完之后保存: 先按下esc 按键再按下:w 保存 :q退出  :wq    写完之后不想保存 强制退出  esc  :q! 删除文件/文件夹 rm -rf a.txt  b.txt rm -rf soft 复制 如果复制文件 cp  要复制的文件名   复制出来的文件名子    cp  a.txt   a1.txt 如果复制的是文件夹的 cp -r soft/   soft1 展示一个文件中的内容 cat  移动文件  mv  temp1   temp2 重命名 mv  temp1   temp2 查找: find /(查找的路径)  -name   *.txt    b 清屏  clear tab 按键 可以帮助我们把输入的内容补全   3.配置局域网  需要通过ssh软件远程操作linux系统 远程操作centos系统  在windows操作系统中通过一款软件来远程操作虚拟电脑中的centos系统  ssh软件: xshell  secureCRT 第一步在win10系统中下载并且安装ssh软件 secureCRT    第二步:只要知道centos系统所在电脑的公网IP  登录账户和密码      /  win10和centos系统所在的两台电脑在同一个局域网内  局域网IP  登录账户和密码 第三步:centos系统 进行局域网的设置 往网卡中写入一些数据   win10写入的方式:桌面的化操作和centos系统写入的方式是不一样的  ip 网关 子网掩码 NM_conteolle。。。 命令  找到往网卡写入数据的文件    重新启动网络服务 开启22端口   重启防火墙服务 网络桥接网络  *************************端口是否开启  4.配置外网  下载软件1.下载并且安装到系统中 node.js环境   npm install bootstrap   默认的镜像库 centos系统    yum install  服务名     默认的镜像库  2.自己下载服务  wget 服务的网络地址 自己单独安装  比较灵活 安装难度大 windows系统  exe文件 linux       rpm包

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧