bool DirExistFile(const QDir &srcdir, const QString fileName, int v_dir, QDir &Dir_buf)
{
int i = v_dir;
if(!srcdir.exists())
return false;
if(fileName.isEmpty())
return false;
if(srcdir.exists(fileName))
{
Dir_buf = srcdir;
return true;
}
QDir sdir = srcdir;
QFileInfoList fileinfolist = sdir.entryInfoList();
foreach(QFileInfo fileInfo, fileinfolist)
{
if(fileInfo.fileName() == "." || fileInfo.fileName() == "..")
continue;
if((fileInfo.isDir()) && (i != 0))
{
if(i > 0)
i--;
if(DirExistFile(fileInfo.filePath(), fileName, i, Dir_buf))
return true;
}
}
return false;
}
bool DirExistVideoFile(const QDir &srcdir, const QString fileName, UInt32 startid, UInt32 stopid, int v_dir, QDir &Dir_buf)
{
int i = v_dir;
if(!srcdir.exists())
return false;
if((fileName.isEmpty()) || (stopid < startid))
{
return false;
}
QString filename1;
char buff[256];
UInt32 j = startid;
int tag_exist = 1;
while((j <= stopid) && (tag_exist == 1))
{
sprintf(buff, fileName.toStdString().c_str(), j);
filename1 = QString::fromStdString(buff);
if(!(srcdir.exists(filename1)))
{
std::cout << "DialogCopyTable::DirExistVideoFile srcdir=" << srcdir.path().toStdString() << " No exist " << filename1.toStdString() << std::endl;
tag_exist = 0;
}
j ++;
}
if(tag_exist == 1)
{
Dir_buf = srcdir;
return true;
}
QDir sdir = srcdir;
QFileInfoList fileinfolist = sdir.entryInfoList();
foreach(QFileInfo fileInfo, fileinfolist)
{
if(fileInfo.fileName() == "." || fileInfo.fileName() == "..")
continue;
if(fileInfo.isDir() && (i != 0))
{
if(i > 0)
i--;
if(DirExistVideoFile(fileInfo.filePath(), fileName, startid, stopid, i, Dir_buf))
{
return true;
}
}
}
return false;
}
bool DirCopyFile(const QDir &srcdir, const QDir &tardir, const QString srcfilename, const QString tarfilename, int tar_re)
{
if((srcdir == tardir) && (srcfilename == tarfilename))
return true;
if(!srcdir.exists())
return true;
if((srcfilename.isEmpty()) || (tarfilename.isEmpty()))
return false;
if(!tardir.exists())
{
if(!(tardir.mkpath(tardir.absolutePath())))
{
std::cout << "DirCopyFile() CreateDir=" << tardir.absolutePath().toStdString() << " Failed!" << std::endl;
return false;
}
}
if(!srcdir.exists(srcfilename))
{
return false;
}
QString filename1;
QString filename2;
filename1 = srcdir.path() + QDir::separator() + srcfilename;
filename2 = tardir.path() + QDir::separator() + tarfilename;
QFile tarfile(filename2);
if(tarfile.exists())
{
if(tar_re == 1)
{
if(!(tarfile.remove()))
{
std::cout << "DirCopyFile() CreateDir=" << filename2.toStdString() << " Failed!" << std::endl;
return false;
}
}
else
return true;
}
return(QFile::copy(filename1,filename2));
}
本文介绍了一个用于在文件系统中搜索特定文件并进行复制的功能。通过递归遍历指定目录及其子目录来查找符合要求的文件,并将找到的文件复制到目标位置。支持通配符匹配文件名,能够处理视频文件等特定类型。
1万+

被折叠的 条评论
为什么被折叠?



