Qt中文件操作遇到的(变量,容器,结构体)

摘要:
总结了一下我在使用QT文件操作时所用到的,再接再厉!file.open;){QMessageBox::warning;}QDataStreamout;out.setVersion;/***************************如果保存变量***************************/QStringsName;IntiAge;out˂˂sName˂˂iAge;/************************如果保存容器*******************/QMapmap;map.insert;map.insert;map.insert;out˂˂map;/***************************如果保存结构体**************************/typedefstructstudent{QStringname;Intage;Intno;}STUDENT_MESSAGE;STUDENT_MESSAGEstuMsg;Out˂˂stuMsg.name˂˂stuMsg.age˂constEnd()){Switch{Case0:name1=i.value();Case1:name2=i.value();Case2:name3=i.value();}++i;}/************************************************************************************/file.close();3.判断所选路径下文件是否存在intMainWindow::treefile{QDirdir;if(!dir.exists()){return-1;}//取到所有的文件和文件名,但是去掉.和..的文件夹dir.setFilter;//文件夹优先dir.setSorting;//转化成一个listQFileInfoListlist=dir.entryInfoList();if{return-1;}inti=0;//递归算法的核心部分do{QFileInfofileInfo=list.at;QStringpath=fileInfo.absolutePath();//获取一个绝对路径//如果是文件夹,递归boolbisDir=fileInfo.isDir();if{treefile;}else{if//找到搜索文件{//这里做你想做的}}i++;}while;}4.删除指定路径下的文件夹boolMainWindow::deleteDir{QDirdirectory;if(!

咳咳!总结了一下我在使用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

免责声明:文章转载自《Qt中文件操作遇到的(变量,容器,结构体)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇备战双 11!蚂蚁金服万级规模 K8s 集群管理系统如何设计?[Data Structure &amp;amp; Algorithm] 八大排序算法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

windows server常用命令

ARP -A 获取与本机通讯过(20分钟内)的主机MAC地址和IP地址 tracert 路由追踪 DOS下IP 获取MAC地址 nbtstat -a IP nslookup 查询DNS解析 ipconfig /flushdns 刷新DNS解析 ipconfig /release 手动释放IP地址 ipconfig /renew 手动更新IP地址 mstsc...

oracle expdp/impdp 用法详解

http://hi.baidu.com/hzfsai/item/4a4b3fc4b1cf7e51ad00efbd oracle expdp/impdp 用法详解 Data Pump 反映了整个导出/导入过程的完全革新。不使用常见的 SQL 命令,而是应用专用 API(direct path api etc) 来以更快得多的速度加载和卸载数据。1.Data...

使用Lucene.NET实现数据检索功能

引言     在软件系统中查询数据是再平常不过的事情了,那当数据量非常大,数据存储的媒介不是数据库,或者检索方式要求更为灵活的时候,我们该如何实现数据的检索呢?为数据建立索引吧,利用索引技术可以更灵活更快捷的实现检索功能。     以下我要介绍的是.NET版的Lucene在实际项目中是如何应用的。 案例概要     我以一个文件检索系统为例,主要功能就...

Lucene 6.5.0 入门Demo

Lucene 6.5.0 要求jdk 1.8 1.目录结构; 2.数据库环境; private int id; private String name; private float price; private String pic; private String description 3. Lucene是Apache的一个全文检索引擎工具包,它不能...

redis make报错

解压redis后,第一次make出现报错: [root@localhost redis-3.2.5]# make cd src && make allmake[1]: Entering directory `/data/redis/redis-3.2.5/src'rm -rf redis-server redis-sentinel redi...

DB2命令——客户端命令连接服务器

在DB2中从客户端访问服务器端的数据库时,不能直接用connect命令,而必须先建立通信node,再在node的基础上建立数据库连接。在命令行的具体操作如下: ->db2 catalog tcpip node ABC remote serverName server 50000 ->db2 catalog db databaseName at...