- 浏览: 3418365 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
sonichy:
Qt5改动很多,要改改了。
基于QItemDelegate的例子1 SpinBoxDelegate -
我的主页6:
楼主,2.2子查询的分页方式:SELECT * FROM ar ...
Mysql 分页语句Limit用法 -
liguoqi:
非常感谢楼主的用心指导,工具以及图片例子都提供了 赞!
两款免费DCIOM 图像浏览软件介绍和DICOM图像例子供下载 -
liguoqi:
问下这个图片怎么解压损坏呀
两款免费DCIOM 图像浏览软件介绍和DICOM图像例子供下载 -
liguoqi:
楼主讲解的非常详细,还附带工具和图片例子,非常感谢
两款免费DCIOM 图像浏览软件介绍和DICOM图像例子供下载
转载:http://blog.csdn.net/liuhongwei123888/article/details/6084761
今天学习QT的文件操作
1、QIODevice
直接继承自QObject
QIODevice类是输入/输出设备的基类。
QIODevice为设备提供了公共实现和抽象接口用于读写块数据。
QIODevice是一个抽象类,不能被实例化。
被Q3Socket,Q3SocketDevice,QAbstractSocket,QBuffer,QFile,QLocalSocket,QNetworkReply,QProcess继承.
===============================================================================================
2、QFile
继承自QIODevice
QFile类是一个操作文件的输入/输出设备。
QFile是用来读写二进制文件和文本文件的输入/输出设备。QFile可以自己单独被使用,但是如果和QDataStream或QTextStream一起使用将更加方便。
文件名通常可以通过构造函数来传递,但也可以使用setName()来设置。目录分隔符在任何操作系统下都使用“/",“/"不被支持。你可以通过exists()来检查一个文件是否存在并且可以通过remove()来移去一个文件。更多操作系统相关的高级文件系统操作QT提供了QFileInfo和QDir类.
文件可以用open()来打开、用close()来关闭、用flush()来刷新。数据通常可以使用QDataStream或者QTextStream进行读写,但你也可以使用read(),readLine(),readAll(),write()读写。QFile也支持getChar(),putChar(),和ungetChar()
size()可以返回文件的大小。你可以通过使用pos()函数得到当前文件位置或者使用seek()移到一个新的文件位置。如果你到了文件的末尾,atEnd()返回真。
一行一行直接读取文件
QFile file("/home/administrator/testdir/test.txt"); if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) { qDebug()<<"Can't open the file!"<<endl; } while(!file.atEnd()) { QByteArray line = file.readLine(); QString str(line); qDebug()<< str; }
使用QTextStream读取文件
QFile file("/proc/modules"); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return; QTextStream in(&file); QString line = in.readLine(); while (!line.isNull()) { process_line(line); line = in.readLine(); }
使用QTextStream写入文件
QFile file("out.txt"); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) return; QTextStream out(&file); out << "The magic number is: " << 49 << "\n";
QDataStream 重载了运算符了"<<"写数据,>>读数据
QFile file("/home/administrator/testdir/test.txt"); if(!file.open(QIODevice::ReadWrite | QIODevice::Text)) { qDebug()<<"Can't open the file!"<<endl; } QTextStream stream(&file); QString line_in; // while( !stream.atEnd()){ // line_in = stream.readLine(); // qDebug() << line_in; // } // stream.seek(stream.pos()); stream.seek(file.size());//将当前读取文件指针移动到文件末尾 int count = 0; while(count < 10){ stream << QObject::trUtf8("新建行:") <<++count<<"/n"; } stream.seek(0);//将当前读取文件指针移动到文件开始 while( !stream.atEnd()){ line_in = stream.readLine(); qDebug() << line_in; }
3、QDir
QDir类提供了访问目录结构和他们的内容。
QDir类提供了访问目录结构和它们的内容的与平台无关的方式。
QDir用来操作路径名称、关于路径和文件的访问信息和操作底层文件系统。
QDir使用相对或绝对文件路径来指向一个文件。绝对路径是从目录分隔符“/”或者带有一个驱动器标识(除了在Unix下)。如果你总是使用“/”作为目录分隔符,Qt将会把你的路径转化为符合底层的操作系统的。相对文件名是由一个目录名称或者文件名开始并且指定一个相对于当前路径的路径。
例如绝对路径:
QDir("/home/administrator/soft");
QDir("D:/software");
我们可以使用isRelative()或isAbsolute()函数确认QDir是用的相对路径还是绝对路径。使用makeAbsolute()来转换相对路径的QDir转换成绝对路径的QDir.
QDir d("D:/"); d.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks | QDir::AllDirs);//列出文件,列出隐藏文件(在Unix下就是以.开始的为文件),不列出符号链接(不支持符号连接的操作系统会忽略) d.setSorting(QDir::Size | QDir::Reversed);//按文件大小排序,相反的排序顺序 const QFileInfoList list = d.entryInfoList();//返回这个目录中所有目录和文件的QFileInfo对象的列表 QFileInfoList::const_iterator iterator = list.begin(); qDebug() << "目录和文件的数量: " << d.count();//返回找到的目录和文件的数量 qDebug() << "fileName/t/t/tsize/t/t/t"; while(iterator != list.end()){ qDebug() << (*iterator).fileName()<<"/t/t/t"<<(*iterator).size(); iterator++; } qDebug() << "当前目录: " << d.current();//返回应用程序当前目录。 qDebug() << "当前目录的绝对路径" << d.currentPath();//返回应用程序当前目录的绝对路径。 // const QList<QString> list = d.entryList(); //返回这个目录中所有目录和文件的名称的列表 // QList<QString>::const_iterator iterator = list.begin(); // while(iterator != list.end()){ // qDebug() << (*iterator); // iterator++; // }
运行结果:
4、QFileInfo
QFileInfo类提供了一个与平台无关的文件信息.
QFileInfo提供了关于系统中的文件名称和位置,访问权限和是否是符号链接,文件大小和上次修改/读写时间等,也能被用于Qt资源文件。
QFileInfo能通过相对/绝对路径指向一个文件。
可以使用isFile(),isDir(),isSymLink().symLinkTarget()函数提供符号链接的目标文件。
在Unix(包括Mac OS X)的符号链接具有与目标文件相同的大小(),因为Unix透明地处理符号链接;同样,打开一个符号连接使用的QFile有效地打开链接的目标.
在Windows中,符号链接(快捷方式)的lnk文件。它大小()的是,符号链接(而不是链接的目标)的大小,打开一个符号连接使用的QFile并打开。lnk文件。例如
#include <QtCore/QCoreApplication> #include <QFileInfo> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QFileInfo info1("E:/meego/vi_command.lnk"); qDebug() << info1.isSymLink(); qDebug() << info1.absoluteFilePath(); qDebug() << info1.size(); qDebug() << info1.symLinkTarget(); qDebug() << "**********************"; QFileInfo info2(info1.symLinkTarget()); qDebug() << info2.isSymLink(); qDebug() << info2.absoluteFilePath(); qDebug() << info2.size(); return a.exec(); }
运行结果:
- #include <QtCore/QCoreApplication>
- #include <QFileInfo>
- #include <QDebug>
- #include <QTextCodec>
- int main(int argc, char *argv[])
- {
- QCoreApplication a(argc, argv);
- QTextCodec *codec = QTextCodec::codecForName("GB2312");
- QTextCodec::setCodecForLocale(codec);
- QTextCodec::setCodecForCStrings(codec);
- QTextCodec::setCodecForTr(codec);
- QFileInfo info("E:/meego/基本命令与VI.Command.txt");
- qDebug() << info.baseName();//不包括后缀名
- qDebug() << info.bundleName();//只有在Mac OS才有用,其它平台为空字符串
- qDebug() << info.suffix();//后缀名
- qDebug() << info.completeBaseName();//不包括后缀名
- qDebug() << info.completeSuffix();//完整的后缀名
- return a.exec();
- }
运行结果:
发表评论
-
Qt官网变更【2012】
2012-09-21 19:30 4129Qt最近被Digia完全收购,诺基亚这两年的不理不睬,没有魄力 ... -
【转】QT实现不规则窗体
2012-09-21 18:50 4903看到好文章,收藏一下: 看到网上有很多不规则窗体的实现 ... -
Qt应用程序如何使用DCMTK类库进行二次开发DICOM数据传输
2012-09-13 09:35 0参考文章: 1、Using DCMTK with ... -
【转】将QT开发的界面程序封装成DLL,在VC中成功调用
2012-09-11 10:33 20988最近手头的一个项目需要做一个QT界面,并且封装成DLL,然后 ... -
诺基亚挥别Qt,转手给Digia
2012-09-11 09:37 2772一家总部位于芬兰的IT业务供应商Digia今天宣布,已经签署了 ... -
Qt多线程间信号槽传递非QObject类型对象的参数
2012-09-07 15:29 21188一、以前就发现过这个问题: 在Qt项目中,有时候为了 ... -
QT样式表(QStyleSheet)
2012-08-17 10:37 17800QT样式表 (QStyleSheet) 作者:刘旭晖 ... -
FinalData磁盘文件恢复工具(绿色破解版)
2012-08-02 13:28 8467FinalData磁盘文件恢复工具(绿色破解版),使用起来很方 ... -
Eclipse Qt开发环境的建立【转】
2012-08-01 11:15 43101.下载Eclipse目前Eclipse+CDT已经可以 ... -
汽车辐射监测系统-Qt开发
2012-07-25 16:18 4630最近晚上抽空忙了两个月,才把一个小系统做完。虽然做的不是太完 ... -
Qt做发布版,解决声音和图片、中文字体乱码问题
2012-07-14 16:02 4800Qt做发布版,解决声音和图片、中文字体乱码问题 ... -
QTableView使用中的疑问,如何及时显示操作Model后的结果?
2012-06-01 14:52 0最终的解决方法:我正 ... -
【转】Qt QTableview使用
2012-06-01 09:49 9611QTableWidget是QT程序中常用的显示数 ... -
QTableView双击 单机事件信号
2012-06-01 09:47 22877双击QTableView的行,获取该行数据 代码 ... -
QMessageBox改变大小
2012-05-31 15:33 8359创建一个QMessageBox: QMessageBo ... -
更新QTableView中的进度条状态
2012-05-30 14:37 14732前段时间,我接触了,如何在一个QTableView中加入一个控 ... -
QThread 线程暂停 停止功能的实现
2012-05-29 11:56 12109为了实现Qt中线程的暂停运行,和停止运行的控制功能 需要在设 ... -
QT环境变量
2012-05-28 18:53 5536不知道为啥同事有台电脑,装完Qt-VS2008库,和VS Ad ... -
广告光
2012-05-24 18:33 0盈创广告联盟 http://www.yo114.cn/ ... -
Test
2012-05-24 18:22 2131Test<IMG SRC="cf08e32c2 ...
相关推荐
Qt文件操作类QFile简介 Qt中使用QFile类来操作文件的输入/输出。继承至QIODevice,QIODevice类是输入/输出设备的基类, 为设备提供了公共实现和抽象接口用于读写块数据。QIODevice又继承至QObject。 1、使用QFile类...
资源中包括《HEX文件格式解析.pdf》文章,使用QT实现HEX文件生成、HEX文件解析、文件读写及文件拼接功能的工程源码,因项目开发写的工程,可以直接使用,也可作为HEX文件操作参考。
1、创建文件夹 2、写入文件: 3、修改文件内容: 4、删除文件: 5、修改文件名 6、INI文件写入操作:
QFile file("./mapdata"); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::information(this,"","dfds"); return; } if(file.exists() == false) { QMessageBox::information...
基于QT的局域网文件传输,程序启动后用户界面显示同一局域网内的所有用户的IP,将要传输的文件拖动到IP上即可进行传输。本人仅在自己电脑进行测试,此代码仅供QT初学者学习。如有BUG可联系本人。
文件读取操作,文件信息获取 博客地址:https://blog.csdn.net/qq_36926037/article/details/123854687
Qt为文件和目录操作提供... 这些类基本涵盖了文件操作需要的主要功能,有些功能还在某些类里重复出现,例如QFile和QDir都具有删除文件、判断文件是否存在的功能。 实例samp7_3演示了各种目录与文件操作类的主要功能。
比网络上的多了,新建Excel文件的功能。有单元格布局、单元格设值、表操作等
qt实现的sqlites数据库文件与csv文件相互转换案例代码,sqlite数据库文件处理方面基于QT插件库提供的QSQLiteDriverPlugin实现数据库打开、读写、查询等操作,针对csv的文件读写方面,是基于QFile实现的FileQt类封装...
在 writeToFile 函数中,我们首先创建一个 QFile 对象,然后使用 open 方法打开文件,指定了文件的打开模式为 WriteOnly 和 Text。接着我们创建了一个 QTextStream 对象,使用 操作符向文件中写入内容,最后关闭文件...
《文件IO操作开发笔记(一):使用Qt的QFile对磁盘文件存储进行性能测试以及测试工具》 https://hpzwl.blog.csdn.net/article/details/128438303 在做到个别项目对日志要求较高,要求并行写入的数据较多,尽管写入...
经过自己总结的 使用QT下的文件的读取等操作
使用QFileDialog 和 QFile 以及 TextEdit 实现的文本操作 这个界面实现的就是按一个BUTTON键打开文档,并且显示其内容到TextEdit上,按另一个BUTTON键则实现另存为功能,即把 TextEdit上的内容写到新建的或者已有的...
利用QT creator C++平台完成了基于MODBUS通讯协议的8路温度采集、显示、存储上位机软件,主要包括Qcustomplot、Qfile、QLCDNumber、QTableWidget以及QCheckBox的使用,可以在不同的widget上实时绘制8路温度曲线、...
Qt5开发及实例,实例CH902,建立基于控制台的工程,使用QTextStream类读写文本文件。 (1)源文件“main.cpp”的具体实现代码如下: 其中, (a) if(data.open(QFile::WriteOnly|QFile::Truncate)):参数QFile::...
在Qt Creator 的安装目录的qt 文件下的bin 文件夹下(我安装在了D 盘, 所以路径是D:\Qt\2009.04\qt\bin),可以找到所有的相关.dll 文件。在这里 找到mingwm10.dll 文件,将其复制到C:\WINDOWS\system 文件夹下,...
Qt实现的小程序集合,几乎包含了所有的文件操作,还有一些小小的技巧在里面,编写小工具的时候经常用到这些功能
文件的读取和写入是:用QFile和QtextStream(对QString类进行读写操作)实现,并且利用可以获取关于目录路径的QDir判断文件是否存在并创建目录 学生成绩、绩点、重修查询:利用QFile里的readonly读取的老师功能中...