- 浏览: 3446440 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
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 4215Qt最近被Digia完全收购,诺基亚这两年的不理不睬,没有魄力 ... -
【转】QT实现不规则窗体
2012-09-21 18:50 4994看到好文章,收藏一下: 看到网上有很多不规则窗体的实现 ... -
Qt应用程序如何使用DCMTK类库进行二次开发DICOM数据传输
2012-09-13 09:35 0参考文章: 1、Using DCMTK with ... -
【转】将QT开发的界面程序封装成DLL,在VC中成功调用
2012-09-11 10:33 21122最近手头的一个项目需要做一个QT界面,并且封装成DLL,然后 ... -
诺基亚挥别Qt,转手给Digia
2012-09-11 09:37 2861一家总部位于芬兰的IT业务供应商Digia今天宣布,已经签署了 ... -
Qt多线程间信号槽传递非QObject类型对象的参数
2012-09-07 15:29 21383一、以前就发现过这个问题: 在Qt项目中,有时候为了 ... -
QT样式表(QStyleSheet)
2012-08-17 10:37 17895QT样式表 (QStyleSheet) 作者:刘旭晖 ... -
FinalData磁盘文件恢复工具(绿色破解版)
2012-08-02 13:28 8591FinalData磁盘文件恢复工具(绿色破解版),使用起来很方 ... -
Eclipse Qt开发环境的建立【转】
2012-08-01 11:15 43831.下载Eclipse目前Eclipse+CDT已经可以 ... -
汽车辐射监测系统-Qt开发
2012-07-25 16:18 4694最近晚上抽空忙了两个月,才把一个小系统做完。虽然做的不是太完 ... -
Qt做发布版,解决声音和图片、中文字体乱码问题
2012-07-14 16:02 4866Qt做发布版,解决声音和图片、中文字体乱码问题 ... -
QTableView使用中的疑问,如何及时显示操作Model后的结果?
2012-06-01 14:52 0最终的解决方法:我正 ... -
【转】Qt QTableview使用
2012-06-01 09:49 9677QTableWidget是QT程序中常用的显示数 ... -
QTableView双击 单机事件信号
2012-06-01 09:47 23104双击QTableView的行,获取该行数据 代码 ... -
QMessageBox改变大小
2012-05-31 15:33 8451创建一个QMessageBox: QMessageBo ... -
更新QTableView中的进度条状态
2012-05-30 14:37 14868前段时间,我接触了,如何在一个QTableView中加入一个控 ... -
QThread 线程暂停 停止功能的实现
2012-05-29 11:56 12207为了实现Qt中线程的暂停运行,和停止运行的控制功能 需要在设 ... -
QT环境变量
2012-05-28 18:53 5594不知道为啥同事有台电脑,装完Qt-VS2008库,和VS Ad ... -
广告光
2012-05-24 18:33 0盈创广告联盟 http://www.yo114.cn/ ... -
Test
2012-05-24 18:22 2191Test<IMG SRC="cf08e32c2 ...
相关推荐
在实际开发中,结合QFile和QFileInfo,我们可以实现强大的文件操作功能。例如,创建一个简单的文本编辑器,用户可以打开、编辑和保存文件。在打开文件时,先用QFileInfo检查文件是否存在和是否可读;然后用QFile打开...
在Qt框架中,QFile类是用于处理本地文件的...总之,Qt中的QFile类提供了底层的文件操作能力,通过它我们可以实现对ini文件的精细化控制,虽然相比QSettings增加了编写代码的工作量,但在特定情况下能提供更高的灵活性。
下面将详细讨论QT如何实现HEX文件操作,并结合提供的资源,如《HEX文件格式解析.pdf》和源码工程,探讨相关知识点。 首先,了解HEX文件格式至关重要。HEX文件包含一系列记录,每个记录由起始字符、地址字段、数据...
### QT中的文件读写操作 #### 1. 文件写入操作 在QT框架中,文件的写入操作通常涉及以下几个步骤: - **创建文件对象**:通过`QFile`类来创建一个文件对象。 - **打开文件**:调用`open`方法来打开文件,可以指定...
在Qt框架中,进行文件操作是非常常见的任务,包括创建、写入、删除文件以及处理特定格式如INI和XML文件。以下是对这些操作的详细说明: 1. 创建文件夹: 要创建一个新的文件夹,可以使用`QDir`类。首先包含头文件`...
在本文中,我们将深入探讨如何在Qt环境中使用线程锁,包括文件锁和生产者-消费者锁,并结合Visual Studio 2019进行GUI编程。这些知识点对于理解多线程同步以及Qt GUI应用的开发至关重要。 首先,让我们从Qt中的线程...
Qt文件操作类QFile简介 Qt中使用QFile类来操作文件的输入/输出。继承至QIODevice,QIODevice类是输入/输出设备的基类, 为设备提供了公共实现和抽象接口用于读写块数据。QIODevice又继承至QObject。 1、使用QFile类...
QT框架是Qt公司开发的一种跨平台的C++...总结,QT的QFile类为开发者提供了强大的文件操作功能,无论是简单的读写操作还是复杂的文件管理,QFile都能满足需求。理解并熟练运用QFile,是提升QT应用开发能力的重要一环。
使用QFileDialog 和 QFile 以及 TextEdit 实现的文本操作 这个界面实现的就是按一个BUTTON键打开文档,并且显示其内容到TextEdit上,按另一个BUTTON键则实现另存为功能,即把 TextEdit上的内容写到新建的或者已有的...
在QT开发中,文件操作是一项基础且重要的任务。本文将深入探讨如何在QT环境中实现“文件所有内容的读取”并将其转化为二进制格式显示。这个功能对于开发者来说非常实用,因为它允许开发者查看和复制文件的二进制数据...
总结来说,基于QT的局域网文件传输项目涉及了QT库的GUI设计、网络扫描、文件操作、网络通信(TCP/UDP)以及可能的多线程或异步编程技术。对于想要学习QT和网络编程的初学者,这个项目提供了丰富的实践机会,同时也为...
**Qt文件操作示例程序** Qt是一个跨平台的C++图形用户界面应用程序开发框架,它提供了丰富的API用于处理各种文件操作。在这个示例程序中,我们可能会看到如何在Qt中进行基本的文件读写、文件操作监控以及进度条的...
此外,我们还需要`QFile`和`QDir`类来处理文件和目录的操作。 实现文件拷贝功能,我们可以创建一个子线程来执行实际的文件复制操作。在这个子线程中,我们将使用`QFile`的`copy()`方法,同时在主线程中更新进度条。...
3. **文件操作**: QT提供QFile、QDir类来处理文件和目录。例如,使用QDir::mkdir()可以创建新目录,QFile::remove()用于删除文件,QFile::copy()和QFile::move()分别用于复制和移动文件。 4. **事件处理与信号槽...
总的来说,QT中的文件对话框选择文件功能结合了`QFileDialog`, `QFile`, `QTextStream`和`QFileInfo`等类,提供了完整的文件选择和操作流程。理解并熟练运用这些工具,能够帮助开发者实现更加用户友好的界面和高效的...
qt c++ 文件 删除一行 删除指定行 可以删除指定文件中的指定行
总的来说,`Qt`库提供了强大的文件和文件夹操作能力,开发者可以根据需求灵活运用这些API,实现各种复杂的文件操作任务。在实际开发中,确保正确处理异常情况,如文件不存在、权限问题等,是保证代码健壮性的关键。...
Qt是一个跨平台的应用程序开发框架,它提供了丰富的API来处理文件操作和多线程编程,使得我们可以方便地实现高效的文件复制任务。 首先,我们需要了解Qt中的文件操作类。`QFile`是用于读写单个文件的基础类,而`...
在Qt中,我们可以使用`QUdpSocket`类来实现UDP通信,但具体操作超出了当前话题的范围。如果你需要了解这部分内容,建议查阅相关的Qt网络编程教程。 总结起来,Qt提供了一套强大且灵活的工具来处理文件和数据流,...