(vc6)怎么将一个文件拷贝到指定目录下的所有子文件夹中
假设有一个文件a.html,需要将它发送到a目录下面的子文件夹下,a目录文件名不变,子文件夹名字每次开机会改变名字,小白一个,希望给个完整源码:能将a.html发送到指定目录下的所有子文件夹中
给你完整写了一个
void GetFilePath(CString filename, CString filetitle, CString strDir);
void CQ702697Dlg::OnButton1()
{
// TODO: Add your control notification handler code here
CFileDialog dlg(TRUE);
CString filename = "";
CString filetitle = "";
if (dlg.DoModal() == IDOK)
{
filename = dlg.GetPathName();
filetitle = dlg.GetFileTitle() + "." + dlg.GetFileExt();
}
else
{
return;
}
char lpDir[301];
XBrowseForFolder(this->m_hWnd, "C:\\", -1, "Q702697", lpDir, 300, TRUE);
CString dir = (CString)lpDir;
GetFilePath(filename, filetitle, dir);
}
void GetFilePath(CString filename, CString filetitle, CString strDir)
{
CFileFind finder;
BOOL isNotEmpty=finder.FindFile(strDir+"*.*");
while(isNotEmpty)
{
isNotEmpty=finder.FindNextFile();
CString filename1=finder.GetFilePath();
if(finder.IsDirectory())
{
if(!(finder.IsDots()||finder.IsReadOnly()))
{
CString newfilename = filename1+"/"+filetitle;
CopyFile(filename, newfilename, FALSE);
GetFilePath(filename,filetitle,filename1+"/");
}
}
}
}
下载地址:
https://download.csdn.net/download/caozhy/10723095
运行效果:
遍历得到所有的子目录的路径,然后把文件CopyFile等复制到所有的子目录
CFileFind Finder ;
CString strDir = DataDir ; //DataDir为要操作的文件所在目录
if( strDir.Right(1) != "\\" )
strDir += "\\" ;
strDir += "*.*" ;
bool bWorking = Finder.FindFile( strDir ) ;
while( bWorking )
{
bWorking = Finder.FindNextFile() ;
CString DataFile = Finder.GetFilePath() ; //GetFilePath:得到全路径名
if(finder.IsDirectory() && !finder.IsDots()) //如果是目录 { }
else if( !Finder.IsDirectory() && !Finder.IsDots() )//不为目录
{
CString FileTitle = Finder.GetFileTitle() ;//GetFileTitle:得到不带后缀文件名
CString FileName = Finder.GetFileName(); //GetFileName:得到带后缀的文件名
//........
}
}
Finder.Close() ;
CFileFind类Find()/FileNext()
这是网上找的遍历目录中子文件的代码,不知道怎么加上复制一个文件到所有目录下的子目录,可以帮忙修改下吗
#include
#include
#include
using namespace std;
void getFiles(string path, vector& files)
{
//文件句柄
long hFile = 0;
//文件信息,声明一个存储文件信息的结构体
struct _finddata_t fileinfo;
string p;//字符串,存放路径
if ((hFile = _findfirst(p.assign(path).append("\*").c_str(), &fileinfo)) != -1)//若查找成功,则进入
{
do
{
//如果是目录,迭代之(即文件夹内还有文件夹)
if ((fileinfo.attrib & _A_SUBDIR))
{
//文件名不等于"."&&文件名不等于".."
//.表示当前目录
//..表示当前目录的父目录
//判断时,两者都要忽略,不然就无限递归跳不出去了!
if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)
getFiles(p.assign(path).append("\").append(fileinfo.name), files);
}
//如果不是,加入列表
else
{
files.push_back(p.assign(path).append("\").append(fileinfo.name));
}
} while (_findnext(hFile, &fileinfo) == 0);
//_findclose函数结束查找
_findclose(hFile);
}
}
int main(){
char * filePath = "D:\a";//自己设置目录
vector files;
////获取该路径下的所有文件
getFiles(filePath, files);
char str[30];
int size = files.size();
for (int i = 0; i < size; i++)
{
cout << files[i].c_str() << endl;
}
}