MFC中使用listctrl控件,怎么把文件夹中的所有文件的属性写入其中
MFC中使用listctrl控件,如何把文件夹中的所有文件的属性写入其中
如上,比如我想把D盘里面我的文档文件夹里面的所有的TXT文件的属性,如文件名,大小,类型,修改时间写入到listctrl控件中。有知道的高手能贴个代码,学习一下。最后在listctrl中显示的效果像下面的图一样。
------解决思路----------------------
------解决思路----------------------
如果是一个列表,则定义一个索引变量nIndex,将上面的0换成nIndex即可,注意列表控件的索引从0开始:
------解决思路----------------------
如上,比如我想把D盘里面我的文档文件夹里面的所有的TXT文件的属性,如文件名,大小,类型,修改时间写入到listctrl控件中。有知道的高手能贴个代码,学习一下。最后在listctrl中显示的效果像下面的图一样。
------解决思路----------------------
CString strPath = "D\\*.*"
WIN32_FIND_DATA fd;
HANDLE hfind;
hfind=FindFirstFile(strPath,&fd);
if(hfind!=INVALID_HANDLE_VALUE)
{
do
{
if(fd.dwFileAttributes!=FILE_ATTRIBUTE_DIRECTORY)
{ //文件名
fd.cFileName;//文件名
fd.ftLastWriteTime;//最后一次修改时间
//类型自己判断
//文件长度自己算
fd.nFileSizeHigh 文件长度高三十二位
fd.nFileSizeLow 文件长度低三十二位
}
else
{//文件夹
同上
}
}
while(FindNextFile(hfind,&fd));
}
------解决思路----------------------
// 插入第一行记录
m_lst.InsertItem(0,_T("Defult.xml"));
m_lst.SetItemText(0,1,_T("2014/07/04 20:52"));
m_lst.SetItemText(0,2,_T("XML文件"));
m_lst.SetItemText(0,2,_T("1KB"));
如果是一个列表,则定义一个索引变量nIndex,将上面的0换成nIndex即可,注意列表控件的索引从0开始:
for ( int nIndex = 0; nIndex < nSzie; nIndex++ )
------解决思路----------------------
/************************************************************************/
/* ErgodicFolder 文件夹遍历 (显示文件信息) */
/************************************************************************/
void C文件遍历器Dlg::ErgodicFolder(LPCTSTR lpStrPath)
{
CString IsShow;
GetDlgItemText(IDC_EDIT1,IsShow);
if (IsShow == "")
{
MessageBox(_T("路径不能为空!!!"));
return;
}
m_List.DeleteAllItems();//清除内容
CString StrBootPath(lpStrPath);
StrBootPath += _T("\\");
CFileFind finder;
CString strExtension;
GetDlgItemText(IDC_COMBO1,strExtension);
BOOL bWorking = finder.FindFile(StrBootPath + strExtension);
/* if (!bWorking)
{
MessageBox(_T("没有该类型的文件!!!"));
return;
}*/
while (bWorking)
{
bWorking = finder.FindNextFile();
if (finder.IsDots())
continue;
if(finder.IsDirectory()){
ErgodicFolder(finder.GetFilePath());
}else{
CString FileName = finder.GetFileName();//文件名
ULONGLONG FileLen = finder.GetLength();//文件大小
// BOOL IsOnly = finder.IsReadOnly();//只读?
CTime tempTime;
CString str,str1,str2;
if (finder.GetCreationTime(tempTime))//创建时间
{
str = tempTime.Format(_T("%c"));
}
if (finder.GetLastWriteTime(tempTime))//写入时间
{
str1= tempTime.Format(_T("%c"));
}
if (finder.GetLastAccessTime(tempTime))//访问时间
{
str2 = tempTime.Format(_T("%c"));
}
//将获得属性显示在listctrl中
int Index = m_List.InsertItem(0xffff,_T(""));
m_List.SetItemText(Index,0,FileName);
CString filelen,IsOk;
filelen.Format(_T("%I64u"),FileLen);
m_List.SetItemText(Index,1,filelen);
IsOk.Format(_T("%c"), finder.IsReadOnly() ? 'Y' : 'N');
m_List.SetItemText(Index,2,IsOk);
m_List.SetItemText(Index,3,str);
m_List.SetItemText(Index,4,str1);
m_List.SetItemText(Index,5,str2);
}
}
}