Qt中文件操作遇到的(变量,容器,结构体)
咳咳!总结了一下我在使用QT文件操作时所用到的,再接再厉!再接再厉!!
1.保存到文件:
QFile file("test.txt");
if (!file.open(QIODevice::WriteOnly);)
{
QMessageBox::warning(NULL, tr("保存文件"),
tr("无法读取文件 %1")
.arg(file.errorString()));
}
QDataStream out(&file);
out.setVersion(QDataStream::Qt_4_3);
/***************************如果保存变量***************************/
QString sName;
Int iAge;
out << sName << iAge;
/************************如果保存容器(如QMap)*******************/
QMap<int, QString> map;
map.insert(0, "name1");
map.insert(1, "name2");
map.insert(2, "name3");
out << map;
/***************************如果保存结构体**************************/
typedef struct student
{
QString name;
Int age;
Int no;
}STUDENT_MESSAGE;
STUDENT_MESSAGE stuMsg;
Out << stuMsg.name << stuMsg.age << stuMsg.no;
/*******************************************************************/
file.close();
2.从文件读取:
QFile file("test.txt");
if (!file.open(QIODevice::ReadWrite))
{
QMessageBox::warning(NULL, tr("读取文件"),
tr("无法读取文件 %1")
.arg(filePro.errorString()));
}
QDataStream in(&file);
in.setVersion(QDataStream::Qt_4_3);
/************************************* 读取变量 *************************************/
QString sName;
Int iAge;
in >> sName >> iAge;
/******************************* 读取容器(如QMap) *******************************/
QMap<int, QString>::const_iterator i = map->constBegin();
QString name1,name2,name3;
while (i != map->constEnd())
{
Switch(i.key())
{
Case 0:name1= i.value();
Case 1:name2= i.value();
Case 2:name3= i.value();
}
++i;
}
/************************************************************************************/
file.close();
3.判断所选路径下文件是否存在
int MainWindow::treefile( QString filePath)
{
QDir dir(filePath);
if (!dir.exists())
{
return -1;
}
//取到所有的文件和文件名,但是去掉.和..的文件夹(这是QT默认有的)
dir.setFilter(QDir::Dirs|QDir::Files|QDir::NoDotAndDotDot);
//文件夹优先
dir.setSorting(QDir::DirsFirst);
//转化成一个list
QFileInfoList list = dir.entryInfoList();
if(list.size()< 1 )
{
return -1;
}
int i=0;
//递归算法的核心部分
do
{
QFileInfo fileInfo = list.at(i);
QString path = fileInfo.absolutePath();//获取一个绝对路径(不包括文件名)
//如果是文件夹,递归
bool bisDir = fileInfo.isDir();
if(bisDir)
{
treefile(fileInfo.filePath());
}
else
{
if(fileInfo.fileName() == "test.txt") //找到搜索文件(比如你要找一个test.txt文件)
{
//这里做你想做的
}
}
i++;
} while(i < list.size());
}
4.删除指定路径下的文件夹
bool MainWindow::deleteDir(const QString dirName)
{
QDir directory(dirName);
if (!directory.exists())
{
return true;
}
QStringList files = directory.entryList(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden);
QList<QString>::iterator f = files.begin();
bool error = false;
for (; f != files.end(); ++f)
{
QString filePath = QDir::convertSeparators(directory.path() + '/' + (*f));
QFileInfo fi(filePath);
if (fi.isFile() || fi.isSymLink())
{
QFile::setPermissions(filePath, QFile::WriteOwner);
if (!QFile::remove(filePath))
{
error = true;
}
}
else if (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中文件操作遇到的(变量,容器,结构体)的更多相关文章
- Qt之文件操作 QFile
原地址:http://blog.csdn.net/liuhongwei123888/article/details/6084761 今天学习QT的文件操作 1.QIODevice直接继承自QObjec ...
- 查看Linux下*.a库文件中文件、函数、变量
查看Linux下*.a库文件中文件.函数.变量等情况在Linux 下经常需要链接一些 *.a的库文件,那怎么查看这些*.a 中包 含哪些文件.函数.变量: 1. 查看文件:ar -t xxx.a 2. ...
- php中文件操作常用函数有哪些
php中文件操作常用函数有哪些 一.总结 一句话总结:读写文件函数 判断文件或者目录是否存在函数 创建目录函数 file_exists() mkdir() file_get_content() fil ...
- python中文件操作的六种模式及对文件某一行进行修改的方法
一.python中文件操作的六种模式分为:r,w,a,r+,w+,a+ r叫做只读模式,只可以读取,不可以写入 w叫做写入模式,只可以写入,不可以读取 a叫做追加写入模式,只可以在末尾追加内容,不可以 ...
- python中文件操作的其他方法
前面介绍过Python中文件操作的一般方法,包括打开,写入,关闭.本文中介绍下python中关于文件操作的其他比较常用的一些方法. 首先创建一个文件poems: p=open('poems','r', ...
- C语言中文件操作
用两个指针变量来操作字符串. 多维数组在做函数参数的时候,会退化成为一个指针变量,变成一个指向一维数组的数组指针,注意,是一个指针变量. 一维数组在当作函数参数传递的时候,会退化成为一个对应类型的指针 ...
- 黑马程序员——C语言基础 变量类型 结构体
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)变量类型 1)局部变量 1> 定义:在函数内部定义的变量,称为 ...
- 4.QT中进程操作,线程操作
QT中的线程操作 T19Process.pro SOURCES += \ main.cpp CONFIG += C++11 main.cpp #include <QCoreApplicat ...
- 界面编程之QT的文件操作20180729
/*******************************************************************************************/ 一.QT文件 ...
随机推荐
- GoWithTheFlow
GoWithTheFlow http://notes.jetienne.com/2011/07/17/gowiththeflow.js-async-flow-control-with-a-zen-to ...
- 【转】vs2008中leptonica-1.68安装配置
tesseract ocr挺不好配置的,找到一篇不错的文章,分享如下:http://hi.baidu.com/ever8936/blog/item/6998e1196b1d0161dab4bd8f.h ...
- Network of Schools(强连通分量+缩点) (问添加几个点最少点是所有点连接+添加最少边使图强连通)
Network of Schools Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13801 Accepted: 55 ...
- HDU 4521 小明系列问题——小明序列 (线段树维护DP)
题目地址:HDU 4521 基本思路是DP.找前面数的最大值时能够用线段树来维护节省时间. 因为间隔要大于d. 所以能够用一个队列来延迟更新,来保证每次询问到的都是d个之前的. 代码例如以下: #in ...
- Swift与Objective-C API的交互
互用性是让 Swift 和 Objective-C 相接合的一种特性,使你能够在一种语言编写的文件中使用另一种语言.当你准备开始把 Swift 融入到你的开发流程中时,你应该懂得如何利用互用性来重新定 ...
- android编译系统的makefile文件Android.mk写法如下
(1)Android.mk文件首先需要指定LOCAL_PATH变量,用于查找源文件.由于一般情况下Android.mk和需要编译的源文件在同一目录下,所以定义成如下形式:LOCAL_PATH:=$(c ...
- for语句的嵌套(示例及练习)
for(初始条件:循环条件:状态改变) {for(初始条件:循环条件:状态改变) { 循环体 }} 一般,用来解决循环的方法:穷举法.迭代法. 示例一:阶乘的和 示例二: 练习一:兔 ...
- CSS的float与clear
首先要知道,div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流.如下图: 可以看出,即使div1的宽度很小,页面中一行可以容下div1和div2,div2也不会排在div1后边,因为d ...
- 我在网站开发中经常用到的几个js函数01
这是我在最近的一个网站项目中频繁用到的几个js函数,非常实用.包括:1.js获取地址栏参数:2.返回cookies字符串中指定键对应的值:3.json格式的日期转换为正常格式4.清除cookie. / ...
- 一个简单链表的C++实现
/* LList.cpp * Author: Qiang Xiao * Time: 2015-07-12 */ #include<iostream> using namespace std ...