遍历,查询文件夹下是否存在指定的文件:
bool IsExistFileInDir( const QString strDir,const QString strFileName )
{
// 遍历文件夹判断是否存在指定的文件
//判断路径是否存在
QDir dir(strDir);
if(!dir.exists())
{
return false;
}
dir.setFilter(QDir::Files | QDir::NoSymLinks);
QFileInfoList list = dir.entryInfoList();
int file_count = list.count();
if(file_count <= 0)
{
return false;
}
for(int i=0; i < file_count; i++)
{
QFileInfo file_info = list.at(i);
QString filename = file_info.filePath();
if (filename == strFileName)
{
return true;
}
}
return false;
}
遍历删除文件夹:
void RemoveFilesInDir( const QString &path )
{
// 删除文件夹(递归)
QDir dir(path);
QFileInfoList info_list = dir.entryInfoList(QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot | QDir::NoSymLinks | QDir::AllDirs);
foreach(QFileInfo file_info, info_list)
{
if (file_info.isDir())
{
RemoveFilesInDir(file_info.absoluteFilePath());
}
else if (file_info.isFile())
{
QFile file(file_info.absoluteFilePath());
file.remove();
}
}
QDir temp_dir;
temp_dir.rmdir(path) ;
}
拷贝文件夹:
bool CopyDirectoryFiles( const QString &fromDir, const QString &toDir )
{
QDir sourceDir(fromDir);
QDir targetDir(toDir);
if(!targetDir.exists())
{ // /**< 如果目标目录不存在,则进行创建 */
if(!targetDir.mkdir(targetDir.absolutePath()))
return false;
}
QFileInfoList fileInfoList = sourceDir.entryInfoList();
foreach(QFileInfo fileInfo, fileInfoList)
{
QString filename = fileInfo.filePath();
if(fileInfo.fileName() == "." || fileInfo.fileName() == "..")
continue;
if(fileInfo.isDir())
{ // /**< 当为目录时,递归的进行copy */
if(!CopyDirectoryFiles(fileInfo.filePath(), targetDir.filePath(fileInfo.fileName())))
return false;
}
else
{
// 存在同名文件,则跳过拷贝
if(targetDir.exists(fileInfo.fileName()))
{
continue;
}
// 进行文件copy
if(!QFile::copy(fileInfo.filePath(),targetDir.filePath(fileInfo.fileName())))
{
return false;
}
}
}
return true;
}
拷贝文件:
bool CopySinglelFile(const QString& sourceFilePath, QString& destFilePath, bool coverFileIfExist)
{
destFilePath.replace("\\","/");
//判断是否自拷贝
if (sourceFilePath == destFilePath)
{
return true;
}
//判断源文件是否存在
if (!QFile::exists(sourceFilePath))
{
return false;
}
//目的路径
QDir* destDir = new QDir;
//判断路径下是否已经存在
if (destDir->exists(destFilePath))
{
if (coverFileIfExist)
{
//删除同名文件
destDir->remove(destFilePath);
}
}
//执行拷贝
return QFile::copy(sourceFilePath,destFilePath);
}