C文件查找按内容文件名称查找Word文档格式.doc
《C文件查找按内容文件名称查找Word文档格式.doc》由会员分享,可在线阅读,更多相关《C文件查找按内容文件名称查找Word文档格式.doc(9页珍藏版)》请在冰豆网上搜索。
Form
{
publicForm1()
{
InitializeComponent();
}
#region函数
///<
summary>
///选中的文件夹
/summary>
privateDirectoryInfo_dirSelected;
///检索关键字
privatestring_strKeyWord;
///存储文件的DataTable
privateDataTable_dtFileInfo;
///可查找的后缀名
privateHashtable_htExtension;
///检索方式:
1按内容检索2按文件名称检索
privateint_iQueryType=1;
privatebool_bFlagRunCompleted=true;
///是否区分大小写
privatebool_bFlagIsUpLower=true;
privateconstint_GB=1024*1024*1024;
//定义GB的计算常量
privateconstint_MB=1024*1024;
//定义MB的计算常量
privateconstint_KB=1024;
//定义KB的计算常量
privatedelegatevoiddlgShowSearchFileName(stringstrMsg);
privatedelegatevoiddlglBindDataTableToDataGridView();
#endregion
#region方法
#region跨线程访问控件
///跨线程访问控件:
显示检索文件名
paramname="
strMsg"
>
<
/param>
privatevoidAccessToControl_ShowSearchFileName(stringstrMsg)
if(this.InvokeRequired)
{
dlgShowSearchFileNamedlgShowMsg=newdlgShowSearchFileName(AccessToControl_ShowSearchFileName);
this.lblSearchMsg.Invoke(dlgShowMsg,newobject[]{strMsg});
}
else
this.lblSearchMsg.Text=string.Format("
正在检索{0}"
strMsg);
privatevoidAccessToControl_BindDataTableToDataGridView()
this.Invoke(newdlglBindDataTableToDataGridView(delegate()
this.dataGridView1.DataSource=null;
this.dataGridView1.DataSource=this._dtFileInfo;
}));
#region搜索
///检索
privatevoidSearch()
ArrayListalFile=newArrayList();
SearchFiles(this._dirSelected,refalFile);
///遍历文件夹下的所有文件
info"
alFileInfo"
privatevoidSearchFiles(FileSystemInfoinfo,refArrayListalFileInfo)
if(!
this._bFlagRunCompleted)
if(!
info.Exists)return;
DirectoryInfodir=infoasDirectoryInfo;
if(dir==null)return;
FileSystemInfo[]files=dir.GetFileSystemInfos();
for(inti=0;
i<
files.Length;
i++)
{
if(!
{
FileInfofile=files[i]asFileInfo;
if(file!
=null)
{
AccessToControl_ShowSearchFileName(file.FullName);
//显示检索信息
stringstrKeyWordTmp=this._strKeyWord;
if(this._iQueryType==1)//按照文件内容检索
{
if(this._htExtension.ContainsValue(file.Extension))
{
try
{
StreamReadersr=newStreamReader(file.FullName);
stringstrContent=sr.ReadToEnd();
intiRowNumber=0;
stringstrContentTmp=strContent;
if(!
this._bFlagIsUpLower)
{
strContentTmp=strContent.ToUpper();
strKeyWordTmp=this._strKeyWord.ToUpper();
}
iRowNumber=GetFindTextLine(strContentTmp,strKeyWordTmp,0);
if(iRowNumber>
0)
//添加到表格
AddToDataGridView(file,iRowNumber);
a