MFC通过txt查找文件并进行复制-备忘
MFC基于对话框的Demo
txt中每行一个23位的卡号。
文件夹中包含以卡号命名的图像文件。(fpt或者bmp文件)
要求遍历文件夹,找到txt中卡号所对应的图像文件,并复制出来。
VC6.0写的。


太懒了,代码以前写过,直接复制就OK。
**.cpp

下边的代码比较常用and改动比较大,备忘一下。

void CRenameFileDlg::OnButton1()
{//按钮1
UpdateData();
char buf[MAX_PATH] = {};
if (select_any(buf))
{
m_pathname=buf;
UpdateData(FALSE);
} }
void CRenameFileDlg::OnButton2()
{//按钮2
UpdateData();
//生成一个打开对话框
CFileDialog *lpszOpenFile;
lpszOpenFile = new CFileDialog
(TRUE,"ccd.txt","",OFN_FILEMUSTEXIST |OFN_HIDEREADONLY , "文件类型(*.txt)|*.txt|所有文件(*.*)|*.*|"); if(lpszOpenFile->DoModal() == IDOK )//假如点击对话框确定按钮
{
m_pathname2 = lpszOpenFile->GetPathName();//得到打开文件的路径
SetWindowText(m_pathname2);//在窗口标题上显示路径
}
UpdateData(FALSE);
}
void CRenameFileDlg::OnButton3()
{//按钮3 UpdateData();
char buf[MAX_PATH] = {};
if (select_any(buf))
{
m_newfilepath=buf;
UpdateData(FALSE);
}
}
void CRenameFileDlg::OnBUTTON2ok()
{//按钮4
strtemp="";
UpdateData();
if (m_pathname=="")
{
MessageBox("请选择路径","提示",MB_OK);return;
} h_FileFile(m_pathname); ////
theApp.AddtoTxt(strtemp);
AfxMessageBox(" 操作已完成!"); }
遍历文件夹并处理的模子函数。
void CRenameFileDlg::h_FileFile(CString path)
{
CString filePath=path+_T("//*.*");//能遍历所有子文件夹
//CString filePath=path+_T("//*.bmp"); 不能遍历
CFileFind fileFinder;
BOOL bFinished = fileFinder.FindFile(filePath); while(bFinished) //每次循环对应一个类别目录
{
bFinished = fileFinder.FindNextFile();
if(fileFinder.IsDirectory() && !fileFinder.IsDots()) //若是目录则递归调用此方法
{
h_FileFile(fileFinder.GetFilePath());
}
else //判断文件名是否在txt中
{ //获取路径名 c:\123\456.bmp
CString path2=fileFinder.GetFilePath();
//获取文件名 456.bmp
CString fileName = fileFinder.GetFileName();////获得不包含路径的 文件名.后缀 CString f_fix,f_fname;
f_fix=fileName.Right();
f_fname=fileName.Left();
if (f_fix==".bmp")
{ ///////////////// CStdioFile file; if(!file.Open(m_pathname2,CFile::modeRead))
{
MessageBox("can not open file!");
return;
} CString strLine,strTemp,strrow; //strLine:txt每行的内容
while(file.ReadString(strLine))
{
CString str,p;
str= strLine.GetBufferSetLength(strLine.GetLength());
if(strLine!="")
{ if (f_fname==str.Left())//
{ //可以自己写各种处理函数 strtemp=strtemp+fileFinder.GetFilePath()+"\r\n"; }
}
} ////////////////////////// } }//end_else }//end while }
我常用的。
复制文件函数
函数原型
BOOL CopyFile(LPCTSTR lpExistingFileName,LPCTSTR lpNewFileName,BOOL bFailIfExists ); CopyFile(源文件,目标文件,FALSE); //FALSE覆盖
CopyFile(c:\\.fpt,c:\newfilefolder\.fpt,FALSE); 移动文件函数声明
BOOL MoveFile(
LPCTSTR lpExistingFileName, // file name
LPCTSTR lpNewFileName // new file name
);
用例
MoveFile("C:\\File1.txt","C:\\File3.txt");
函数功能
移动一个存在的文件或者目录(包括子目录)
参数说明
lpExistingFileName 一个存在的文件或者文件夹字符串指针
lpNewFileName 一个还没存在的文件或者文件夹的字符串指针 用法
DeleteFile 方法删除指定文件。
BOOL DeleteFile(
LPCSTRlpFileName//要删除的文件名的指针
);
参数
lpFileName
必选项。要删除文件的路径。
返回值
成功返回非零,失败返回0
更多错误信息使用GetLastError获取。
如果程序尝试删除一个不存在的文件。GetLastError返回ERROR_FILE_NOT_FOUND。如果文件是只读 的,则GetLastError返回ERROR_ACCESS_DENIED //获取路径名
CString path2=fileFinder.GetFilePath(); //AfxMessageBox("path2="+path2);
//获取文件名
CString fileName = fileFinder.GetFileName(); CString DelfilePath;
int dotPos33=path2.ReverseFind('\\');
DelfilePath=path2.Left(dotPos33)+'\\'; //删除文件
if (fileName.Find("-01.bmp")!=-)
{
//AfxMessageBox("匹配删除 "+DelfilePath+fileName);
DeleteFile(DelfilePath+fileName); }
---------End---------
CopyFile只能复制文件,不能复制该文件的文件夹,复制文件夹的代码 待验证。(懒,猴年马月 试试)
SHFILEOPSTRUCT sfo;
sfo.hwnd = NULL;
sfo.wFunc = FO_COPY;
sfo.pFrom = "c:\\My_Docs1\0 ";
sfo.pTo = "c:\\My_Docs2\0 ";
sfo.fFlags = FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR;
hr = SHFileOperation(&sfo);
-------------
我想把一个文件夹移动到另一个路径,连同文件夹下的所有子文件和子文件夹!例如 f:\a\b 是个文件夹,把整个 b 文件夹移动到 d:\b 。希望能通过一个函数来实现。假如函数为 Movefolder(CString s,CString d),c 和 d 分别保存着原文件夹和目标文件夹的路径。希望高人能给出完整的代码,如果参数不是CString的,能给出转换代码!! BOOL MoveFolder(CString strSrcPath, CString strDestPath)
{
strSrcPath += _T('\0');//注意这里一定要加_T('\0'),不要写成_T("\0");
SHFILEOPSTRUCT si = {};
si.hwnd = ::GetDesktopWindow();
si.wFunc = FO_COPY;
si.pFrom = strSrcPath;
si.pTo = strDestPath;
si.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR; return == SHFileOperation(&si);
} ----------
void myCopyDirectory(CString source, CString target)
{
CreateDirectory(target,NULL); //创建目标文件夹
//AfxMessageBox("创建文件夹"+target);
CFileFind finder;
CString path;
path.Format("%s/*.*",source);
AfxMessageBox(path);
bool bWorking = finder.FindFile(path);
while(bWorking){
bWorking = finder.FindNextFile();
AfxMessageBox(finder.GetFileName());
if(finder.IsDirectory() && !finder.IsDots()){ //是文件夹 而且 名称不含 . 或 ..
myCopyDirectory(finder.GetFilePath(),target+"/"+finder.GetFileName()); //递归创建文件夹+"/"+finder.GetFileName()
}
else{ //是文件 则直接复制
//AfxMessageBox("复制文件"+finder.GetFilePath());//+finder.GetFileName()
CopyFile(finder.GetFilePath(),target+"/"+finder.GetFileName(),FALSE);
}
}
}
MFC通过txt查找文件并进行复制-备忘的更多相关文章
- DOS命令批量重命名文件配合Excel 操作备忘
批量取得文件夹下文件名 有时候文件夹下有好多图片什么的,文件名称不是统一的格式,想统一一下,于是google找到以下方法,进入要操作的目录,按住shift键的同时,单击鼠标右键,你会看到在此处打开命令 ...
- chromedp下载文件的方法,备忘一下。
sect := `//a[@href="v/443.json"]` wd,_ := os.Getwd() fmt.Println(wd) return chromedp.Tasks ...
- c3p0-config.xml文件简单说明与备忘
<?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <named-confi ...
- Windows 查找txt后缀 文件复制
Windows 查找文件 并且复制目录 for /f "delims==" %a in ('dir /b /s F:\F\*.TXT')do copy /-y "%a&q ...
- VC++ MFC文件的移动复制删除更名遍历操作
1.判断文件是否存在 利用CFile类和CFileStatus类判断 CFileStatus filestatus; if (CFile::GetStatus(_T("d://softist ...
- Shell Script编程——USB挂载/复制文件/查找文件/压缩文件
PS:$引用变量的时候不要加空格.用了case,while的结构. main文件 #!/bin/bash chmod a+x changedate chmod a+x changemod chmod ...
- MFC【6】文件I/O和串行化
文件输入和输出(I/O)服务是所有操作系统的主要工作.Microsoft Windows提供了各种API函数用来读.写和操作磁盘文件.MFC将这些桉树和CFile类融合在面对对象的模型里.其中CFil ...
- Java 多线程查找文件中的内容
学过了操作系统,突然不知道多线程有什么用了. 看了一下百度,发现多线程,可以提升系统利用率 在系统进行IO操作的时候,CPU可以处理一些其他的东西,等IO读取到内存后,CPU再处理之前的操作. 总之可 ...
- day12 查找文件
day12 查找文件 find命令:查找文件 find命令:在linux系统中,按照我们的要求去查询文件. 格式: find [查询的路径] [匹配模式] [匹配规则] 匹配模式: -name : 按 ...
随机推荐
- PHP命名空间的作用、为什么使用命名空间?
命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只要避免命名重复就可以解决,最常见的一种做法是约定一个前缀. 举个栗子:项目中 ...
- mongoDB在windows下安装与配置方案
首先在官网下载mongoDB的安装包: https://www.mongodb.org/downloads 百度云盘下载:http://pan.baidu.com/s/1slUSGYp (安装版 wi ...
- MSMQ消息队列 用法
引言 接下来的三篇文章是讨论有关企业分布式开发的文章,这三篇文章筹划了很长时间,文章的技术并不算新,但是文章中使用到的技术都是经过笔者研究实践后总结的,正所谓站在巨人的肩膀上,笔者并不是巨人,但也希望 ...
- 有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。
[提交][状态][讨论版] 题目描述 有一字符串,包含n个字符.写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串. 输入 数字n 一行字符串 数字m 输出 从m开始的子串 样例输入 ...
- Android7.0 新特性
删除了三个隐式广播 1.监听网络变化的广播 CONNECTIVITY_ACTION,在Manifest.xml中注册的 不会受到,在前台运行的程序 registerReceiver()注册的广播可以接 ...
- Tesla P4 在深度学习上的性价比辗压目前所有量产的FPGA
7000的价格, 5.5T FP, 75W不到的功耗,性能接近M40,敢问目前有哪个量产的FPGA能做到?还不算开发和维护的难度...KU115光PCIE+DMA+DDR4 controller+AX ...
- SQL数据库与excel表格之间的数据 导入
- windows7 编译boost1.54
先去下载boost1.54 for windows原码.原来有个安装工具现在已经停止维护了,我试了旧版,已经安装不了. 这是它们的网站:http://www.boostpro.com/download ...
- Host基本概念
TSO TSO是Time Sharing Option的缩写,是MVS的命令输入处理器. TSO是在操作系统的管理下,用来支持ISPF菜单式会话系统和资源管理设备( ...
- android 多线程下载
看代码: public class MainActivity extends AppCompatActivity { private final String TAG = MainActivity.c ...