查找文件 CFileFind类

查找文件

 CFileFind

 提取文件图标

 显示大图标

 显示小图标

 

 一、查找文件

  1CFileFind

//c:\mydir\myfile.txt


GetFileName


获取文件名 myfile.txt


GetFilePath


获取文件路径c:\mydir\myfile.txt


GetFileTitle


获取文件标题 myfile


Close


关掉搜索请求,释放掉占用资源


FindFile


搜索目录,成功返回非零值,否则返回0


FindNextFile


继FindFile后查找下一个文件,最后一个文件时返回

       

IsReadOnly


Determines if the found file is read-only.


IsDirectory


Determines if the found file is a directory.


IsCompressed


Determines if the found file is compressed.


IsSystem


Determines if the found file is a system file.


IsHidden


Determines if the found file is hidden.


IsTemporary


Determines if the found file is temporary.

 

 

 二、提取文件图标

WINSHELLAPI DWORD WINAPI SHGetFileInfo(

LPCTSTR pszPath, //文件路径

DWORD dwFileAttributes, //文件属性 忽略

SHFILEINFO FAR *psfi,//返回文件信息

UINT cbFileInfo, //SHFILEINFO 结构大小

UINT uFlags //文件标志 SHGFI_ICON

);

三、代码测试

CListCtrl* m_list1=(CListCtrl*)GetDlgItem(IDC_LIST1);

int indeximage;

imagelistb.Create(32,32,ILC_COLOR32|ILC_MASK,0,0);//创建图标列表

//imagelistb.Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));

CFileFind   cFindFiles;

WCHAR szFileName[256];

WCHAR found[200];

swprintf(szFileName,L"%s//*.* ",L"C:\\");

BOOL bFound=cFindFiles.FindFile(L"C:\\//*.*");

//

while(bFound)//这个循环是枚举文件的

{

bFound=(BOOL)cFindFiles.FindNextFile();

if(!cFindFiles.IsDirectory())

{

wcscpy(found,cFindFiles.GetFilePath().GetBuffer(200));

SHFILEINFO shfi;

memset(&shfi,0,sizeof(shfi));

SHGetFileInfo(found,

0,

&shfi, sizeof(shfi),

SHGFI_ICON  );  //获取文件信息,含图标的

indeximage=imagelistb.Add( shfi.hIcon);//向ImageList里面添加图标shfi.hIcon

int nCount=m_list1->GetItemCount();

m_list1->InsertItem(nCount,found,nCount);

}

}

m_list1->SetImageList(&imagelistb,LVSIL_NORMAL); //设置图标

m_list1->SetImageList(&imagelistb,LVSIL_SMALL);

int CDialog_ListCtrl_Test::OnInitDialog(void)

{

//添加项目

CListCtrl* plst_ctl=(CListCtrl*)GetDlgItem(IDC_LIST1);

//添加图标

m_imagelist_b.Create(32,32,ILC_COLOR32|ILC_MASK ,0,0);

m_imagelist_s.Create(16,16,ILC_COLOR32|ILC_MASK ,0,0);

plst_ctl->SetImageList(&m_imagelist_b,LVSIL_NORMAL   );//大图标

plst_ctl->SetImageList(&m_imagelist_s,LVSIL_SMALL   );

/*plst_ctl->InsertItem(0,L"0000",0);

plst_ctl->InsertItem(1,L"1111",0);

plst_ctl->InsertItem(2,L"2222");

plst_ctl->InsertItem(3,L"aaaaa");

plst_ctl->SetItemText(3,0,L"33333");*/

CFileFind findfile;

int nfound=findfile.FindFile(L"C:\\Windows\\//*.*");

int i=0;

while(nfound)

{

nfound=findfile.FindNextFile();

if (findfile.IsDirectory())

{

continue;

}

SHFILEINFO finfo;

//获取文件信息,主要图标icon

SHGetFileInfo(findfile.GetFilePath(),0,&finfo,sizeof(finfo),SHGFI_ICON );

//添加文件项目和图标

m_imagelist_s.Add(finfo.hIcon);//向ImageList里添加图标资源

plst_ctl->InsertItem(i++,findfile.GetFileName(), m_imagelist_b.Add(finfo.hIcon));

}

findfile.Close();//释放资源

return 0;

}

****************************************************************************

  获取CListCtrl选中文本      

  ShellExecute打开外部文件

 

一、CListCtrl::GetFirstSelectedItemPosition

CListCtrl::GetFirstSelectedItemPosition

POSITION GetFirstSelectedItemPosition( ) const;

//返回选中项目的位置

二、CListCtrl::GetNextSelectedItem

CListCtrl::GetNextSelectedItem

int GetNextSelectedItem( POSITION& pos ) const;

//返回选中项目的索引值

 

三、ShellExecute函数

  HINSTANCE ShellExecute(

HWND hwnd, //指定父窗口句柄,此参数可为NULL

LPCTSTR lpOperation, //操作方式

LPCTSTR lpFile, //要打开的文件名,一般是全路径的如 c:\\1.txt

LPCTSTR lpParameters, //要带的参数

LPCTSTR lpDirectory,//默认运行目录

INT nShowCmd //显示方式

);

 

四、代码示例

  void CDialog_ListCtrl_Test::OnNMDblclkList1(NMHDR *pNMHDR, LRESULT *pResult)

{

LPNMITEMACTIVATE pNMItemActivate = (LPNMITEMACTIVATE)(pNMHDR);

// TODO: 在此添加控件通知处理程序代码

CListCtrl* plst_ctl=(CListCtrl*)GetDlgItem(IDC_LIST1);

POSITION  pos=plst_ctl->GetFirstSelectedItemPosition();

if (pos)

{

int item=plst_ctl->GetNextSelectedItem(pos);

CString ws=plst_ctl->GetItemText(item,0); //获取文件名

TRACE("%ws \n",ws);

CString filepath;

filepath=L"C:\\Windows\\";

ws=filepath+ws; //算出文件路径

ShellExecute(0,L"open",ws,NULL,NULL,SW_SHOW); //打开文件

}

*pResult = 0;

}

//////////////////////////

void CDialog_ListCtrl_Test::OnNMDblclkList1(NMHDR *pNMHDR, LRESULT *pResult)

{

LPNMITEMACTIVATE pNMItemActivate = (LPNMITEMACTIVATE)(pNMHDR);

// TODO: 在此添加控件通知处理程序代码

//获取文件目录路径及文件

CListCtrl* plst_ctl=(CListCtrl*)GetDlgItem(IDC_LIST1);

//获取ListCtrl选中项的位置

POSITION pos=plst_ctl->GetFirstSelectedItemPosition();

if (pos)

{

int item_index=plst_ctl->GetNextSelectedItem(pos);

//获取选中图标的文件名

CString filename=plst_ctl->GetItemText(item_index,0);

filename=FileDir+filename;

TRACE("%ws \n",filename);

ShellExecuteW(0,NULL,filename,NULL,NULL,SW_SHOWNORMAL);

}

*pResult = 0;

}

查找文件 CFileFind类,布布扣,bubuko.com

时间: 2024-08-05 10:53:33

查找文件 CFileFind类的相关文章

MyEclipse的快捷键查找文件和类等资源

MyEclipse的快捷键查找文件和类等资源 Ctrl+Shift+R:输入字母查找文件. Ctrl+F:在一个文件中查找字符 Ctrl+Shift+T :搜索类 Ctrl+O:显示该类的所有变量和方法 Ctrl+H:打开Search弹出框 注释代码 Ctrl+/ 取消注释 Ctrl+\(Eclipse3已经都合并到Ctrl+/了) 代码辅助 Alt+/ 快速修复 Ctrl+1 代码格式化 Ctrl+Shift+f 整理导入 Ctrl+Shift+o 切换窗口 Ctrl+f6 <可改为ctrl+

使用CFileFind类查找文件并获取文件图标

以CListCtrl为例,使用CFileFind类查找文件并获取文件的图标填充到CListCtrl中 主要代码如下: int CTestDlg::OnInitDialog(void) { //获取控件指针 CListCtrl* plst_ctl=(CListCtrl*)GetDlgItem(IDC_LIST1);//IDC_LIST1为CListCtrl控件的ID //添加图标(将图标存放在CImageList对象中,并与CListCrtl控件相关联) //m_imagelist_b.Creat

File类之在指定目录中查找文件

1 package IoDemo; 2 3 import java.io.File; 4 5 /** 6 * @Title:FileDemo2 7 * @Description:在指定的目录中查找文件 8 * @author Crazy-ZJ 9 * @data 2017年9月21日下午5:45:24 10 * @book 疯狂java讲义(第三版): 11 */ 12 public class FileDemo2 { 13 public static void main(String[] ar

CFileFind类的使用总结

CFileFind类的使用总结(转) CFileFind类的使用总结2007-7-71.CFileFind类的声明文件保存在afx.h头文件中.2.该类的实现的功能:执行本地文件的查找(查找某个具体的文件,查找某类文件x*.x*,查找所有文件*.*)3.CFileFind类是CGopherFileFind和CFtpFileFind类的基类.4.CFileFind类的构造函数::CFileFind()和关闭函数::Close()我会成对使用.5.CFileFind类的成员函数我根据其操作特性划分为

Linux 常用查找文件或者文件内容

举例树形图 .|-- test_dir| `-- dir_test_doc.text|-- test_dir2| |-- dir2_test_doc.txt| `-- dir2_test_doc2.txt|-- test_doc1.text`-- test_doc2.txt 2 directories, 5 files 1.查找文件内容的行: grep  "被查找的字符串"  文件名 例如: [[email protected] demo]# grep "doc1_conte

C# 文件操作类

using System;using System.IO; namespace Utils{ public class IOHelper { public IOHelper(); public static bool CopyDir(DirectoryInfo fromDir, string toDir); //复制目录 public static bool CopyDir(string fromDir, string toDir); //复制目录 public static bool Crea

linux下常用的查找文件命令

一.常用的查找命令 我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: which       查看可执行文件的位置 whereis    查看文件的位置 locate       配 合数据库查看文件位置 find          实际搜寻硬盘查询文件名称 二.which命令的常用方法 which是通过 PATH环境变量到该路径内查找可执行文件,所以基本的功能是寻找可执行文件: [[email protected] ~]# which cat /bin/c

在linux系统中,如何使用【find】命令精确查找文件?

[find]是文件查找工具,它会遍历指定目录下所有文件的,所以使用该命令,查找文件的速度比较慢.但是它能够文件类根据型.文件的各做为条查件,找显示符合条件的文件目录. 一.既然,[find]是根据文件的特点来查看文种属性件的.那么先了解,文件有啥特点. 1.文件特点有很多,它们是分类的.find 命令如何表示文件特点的类别的: [find]命令是如何标识文件特点的类别的:              文件名称                   -name              文件类型   

Linux如何搜索查找文件里面内容

在Linux系统当中,如何搜.索查找文件里面的内容呢? 这个应该是系统维护.管理当中遇到最常见的需求.那么下面介绍,总结一下如何搜索.查找文件当中的内容. 搜索.查找文件当中的内容,一般最常用的是grep命令,另外还有egrep, vi命令也能搜索文件里面内容 1:搜索某个文件里面是否包含字符串,使用grep "search content" filename1, 例如 $ grep ORA alert_gsp.log $ grep "ORA" alert_gsp.