咳咳!总结了一下我在使用QT文件操作时所用到的,再接再厉!再接再厉!!
1.保存到文件:
QFilefile("test.txt");
if(!file.open(QIODevice::WriteOnly);)
{
QMessageBox::warning(NULL,tr("保存文件"),
tr("无法读取文件%1")
.arg(file.errorString()));
}
QDataStreamout(&file);
out.setVersion(QDataStream::Qt_4_3);
/***************************如果保存变量***************************/
QStringsName;
IntiAge;
out<<sName<<iAge;
/************************如果保存容器(如QMap)*******************/
QMap<int,QString>map;
map.insert(0,"name1");
map.insert(1,"name2");
map.insert(2,"name3");
out<<map;
/***************************如果保存结构体**************************/
typedefstructstudent
{
QStringname;
Intage;
Intno;
}STUDENT_MESSAGE;
STUDENT_MESSAGEstuMsg;
Out<<stuMsg.name<<stuMsg.age<<stuMsg.no;
/*******************************************************************/
file.close();
2.从文件读取:
QFilefile("test.txt");
if(!file.open(QIODevice::ReadWrite))
{
QMessageBox::warning(NULL,tr("读取文件"),
tr("无法读取文件%1")
.arg(filePro.errorString()));
}
QDataStreamin(&file);
in.setVersion(QDataStream::Qt_4_3);
/*************************************读取变量*************************************/
QStringsName;
IntiAge;
in>>sName>>iAge;
/*******************************读取容器(如QMap)*******************************/
QMap<int,QString>::const_iteratori=map->constBegin();
QStringname1,name2,name3;
while(i!=map->constEnd())
{
Switch(i.key())
{
Case0:name1=i.value();
Case1:name2=i.value();
Case2:name3=i.value();
}
++i;
}
/************************************************************************************/
file.close();
3.判断所选路径下文件是否存在
intMainWindow::treefile(QStringfilePath)
{
QDirdir(filePath);
if(!dir.exists())
{
return-1;
}
//取到所有的文件和文件名,但是去掉.和..的文件夹(这是QT默认有的)
dir.setFilter(QDir::Dirs|QDir::Files|QDir::NoDotAndDotDot);
//文件夹优先
dir.setSorting(QDir::DirsFirst);
//转化成一个list
QFileInfoListlist=dir.entryInfoList();
if(list.size()<1)
{
return-1;
}
inti=0;
//递归算法的核心部分
do
{
QFileInfofileInfo=list.at(i);
QStringpath=fileInfo.absolutePath();//获取一个绝对路径(不包括文件名)
//如果是文件夹,递归
boolbisDir=fileInfo.isDir();
if(bisDir)
{
treefile(fileInfo.filePath());
}
else
{
if(fileInfo.fileName()=="test.txt")//找到搜索文件(比如你要找一个test.txt文件)
{
//这里做你想做的
}
}
i++;
}while(i<list.size());
}
4.删除指定路径下的文件夹
boolMainWindow::deleteDir(constQStringdirName)
{
QDirdirectory(dirName);
if(!directory.exists())
{
returntrue;
}
QStringListfiles=directory.entryList(QDir::AllEntries|QDir::NoDotAndDotDot|QDir::Hidden);
QList<QString>::iteratorf=files.begin();
boolerror=false;
for(;f!=files.end();++f)
{
QStringfilePath=QDir::convertSeparators(directory.path()+'/'+(*f));
QFileInfofi(filePath);
if(fi.isFile()||fi.isSymLink())
{
QFile::setPermissions(filePath,QFile::WriteOwner);
if(!QFile::remove(filePath))
{
error=true;
}
}
elseif(fi.isDir())
{
if(!deleteDir(filePath));
{
error=true;
}
}
}
if(!directory.rmdir(QDir::convertSeparators(directory.path())))
{
error=true;
}
return!error;
}
http://blog.csdn.net/mingxia_sui/article/details/7682549