Exemple #1
0
//清除程序临时文件
void CardDoc::removeTempFile(const QString& path)
{
	QDir dir;
	bool exist = dir.exists(path);

	if (exist)
	{
		QDir dirTmp(path);
		QFileInfoList list = dirTmp.entryInfoList();

		//遍历删除目录下的文件
		for (int i = 0; i < list.size(); ++i)
		{
			if(list.at(i).fileName() == "." || list.at(i).fileName() == "..")
			{
				continue;
			}

			dirTmp.remove(list.at(i).fileName());
		}

		//删除tmp文件夹
		dir.rmdir(path);
	}
}
Exemple #2
0
CardDoc::~CardDoc()
{
	//removeTempFile();

	QDir dir;
	bool exist = dir.exists("tmp");

	if (exist)
	{
		QDir dirTmp("tmp//");
		QFileInfoList list = dirTmp.entryInfoList();

		//遍历删除目录下的文件
		for (int i = 0; i < list.size(); ++i)
		{
			if(list.at(i).fileName() == "." || list.at(i).fileName() == "..")
			{
				continue;
			}

			dirTmp.remove(list.at(i).fileName());
		}

		//删除tmp文件夹
		dir.rmdir("tmp");
	}
}
bool PathManager::CopyDir(const QString &source, const QString &destination, bool isCover)
{
	/*  递归实现  */
	/*QDir directory(source);
	if (!directory.exists()){
	return false;
	}

	QString srcPath = QDir::toNativeSeparators(source);
	if (!srcPath.endsWith(QDir::separator())){
	srcPath += QDir::separator();
	}
	QString dstPath = QDir::toNativeSeparators(destination);
	if (!dstPath.endsWith(QDir::separator())){
	dstPath += QDir::separator();
	}

	QStringList fileNames = directory.entryList(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden);
	for (QStringList::size_type i = 0; i != fileNames.size(); ++i)
	{
	QString fileName = fileNames.at(i);
	QString srcFilePath = srcPath + fileName;
	QString dstFilePath = dstPath + fileName;
	QFileInfo fileInfo(srcFilePath);
	if (fileInfo.isFile() || fileInfo.isSymLink()){
	if (isCover){
	QFile::setPermissions(dstFilePath, QFile::WriteOwner);
	}
	if (!QFile::copy(srcFilePath, dstFilePath)){
	return false;
	}
	}
	else if (fileInfo.isDir()){
	QDir dstDir(dstFilePath);
	dstDir.mkpath(dstFilePath);
	if (!CopyDir(srcFilePath, dstFilePath, isCover)){
	return false;
	}
	}
	}

	return true;*/

	QVector<QString> dirNames;
	QVector<QString> fileNames;
	QDir dir(source);
	if (!dir.exists()){
		return false;
	}
	dirNames.clear();
	dirNames << source;

	QFileInfoList filst;
	QFileInfoList::iterator curFi;

	for (int i = 0; i < dirNames.size(); ++i)
	{
		dir.setPath(dirNames[i]);
		filst = dir.entryInfoList(QDir::Dirs | QDir::Files
			| QDir::Readable | QDir::Writable
			| QDir::Hidden | QDir::NoDotAndDotDot
			, QDir::DirsFirst);
		if (filst.size() > 0){
			curFi = filst.begin();
			while (curFi != filst.end())
			{
				if (curFi->isDir()){
					dirNames.push_back(curFi->filePath());
				}
				else if (curFi->isFile()){
					fileNames.push_back(curFi->absoluteFilePath());
				}
				curFi++;
			}
		}
	}

	for (QVector<QString>::Iterator ite = dirNames.begin(); ite != dirNames.end(); ite++)
	{
		QDir dirSrc(source);
		QDir dirDest(destination);
		ite->replace(dirSrc.absolutePath(), dirDest.absolutePath());
		QDir dirTmp(*ite);
		if (!dirTmp.exists() && !dirTmp.mkpath(*ite)){
			return false;
		}
	}

	for (QVector<QString>::Iterator ite = fileNames.begin(); ite != fileNames.end(); ite++)
	{
		QDir dirSrc(source);
		QDir dirDest(destination);
		QString srcPath = *ite;

		QString tar = ite->replace(dirSrc.absolutePath(), dirDest.absolutePath());
		QFile file(tar);
		if (file.exists()){
			if (isCover){
				if (!file.remove()){
					return false;
				}
			}
			else{
				continue;
			}			
		}


		if (!QFile::copy(srcPath, tar)){
			return false;
		}
	}
	return true;
}