Qt中的文件操作
来源:互联网 发布:类似于dropbox的软件 编辑:程序博客网 时间:2024/05/22 00:22
Qt中IO操作的处理方式
- Qt通过统一的接口简化了文件与外部设备的操作方式
- Qt中的文件被看做一种特殊的外部设备
- Qt中的文件操作与外部设备的操作相同
IO操作中的关键函数接口
- 打开设备:bool open(OpenMode mode)
- 读取数据:QByteArray read(qint64 maxSize)
- 写入数据:qint64 write(const QByteArray& byteArray)
- 关闭设备:void close()
IO操作的本质:连续存储空间的数据读写
QFile是Qt中用于文件操作的类
QFile对象对应于计算机上的一个文件
QFile file("C:/Users/hp/test.txt");if(file.open(QIODevice::WriteOnly | QIODevice::Text)){ file.write("D.T.SoftWare"); file.close(); }if(file.open(QIODevice::ReadOnly | QIODevice::Text)){ QByteArray ba = file.readAll(); QString s(ba); qDebug() << s; file.close(); }
Qt中提供了临时文件操作类QTemporaryFile
- 安全地创建一个全局唯一的临时文件
- 当对象销毁时对应的临时文件将被删除
- 临时文件的打开方式为QIODevice::ReadWrite
- 临时文件常用于大数据传递或者进程间通信的场合
Qt中将文件类型分为2类
- 文本文件
- 文件内容是可读的文本字符
- 数据文件
- 文件内容是直接的二进制数据
Qt提供辅助类简化了文本文件/数据文件的读写
- QTextStream
- 写入的数据全部转换为可读文件
- QDataStream
- 写入的数据根据类型转换为二进制数据
IO设备辅助类的使用方式
// 1.创建QFile文件对象file// 2.使用file对象打开文件// 3.将数据写入文件QXXXStream out(&file);out << QString("D.T.");out << QString("Result: ") << 3.14;// 4.将数据从文件中读出QXXXStream in(&file);in >> dt;//QString dt;in >> result;//QString result;in >> value;//double value;
不同版本Qt的数据流文件格式可能不同
- void setVersion(int v) //设置读写版本号
- int version() const //获取读写版本号
当数据流文件可能在不同版本的Qt程序间传递数据时,需要考虑版本问题
缓冲区与目录操作
- 缓冲区的本质为一段连续的存储空间
- QBuffer是Qt中缓冲区相关的类
- 在Qt中可以将缓冲区看作一种特殊的IO设备
文件流辅助类可以直接用于操作缓冲区
QByteArray array;QBuffer buffer(&array);if(buffer.open(QIODevice::WriteOnly)){ QDataStream out(&buffer); out << QString("D.T.S"); out << 3.14; buffer.close();}
QBuffer缓冲区的使用场合
- 在线程间进行不同类型的数据传递
- 缓存外部设备中的数据返回
- 数据读取速度小于数据写入速度
QDir是Qt中功能强大的目录操作类
- Qt中的目录分隔符统一使用’/’
- QDir能够对目录进行任意操作(创建,删除,重命名)
- QDir能够获取指定目录的所有条目(文件和文件夹)
- QDir能够使用过滤字符串获取指定条目
QDIr能够获取系统中的所有根目录
const char* PATH = "C:/Users/QDir";QDir dir;if(!dir.exists(PATH)){ dir.mkdir(PATH);}if(dir.exists(PATH)){ dir.cd(PATH); QStringList list = dir.entryList();//当前文件夹下的所有条目 for(int i=0;i<list.count();i++) {/* Dir Operation */}}
文件系统监视器
QFileSystemWatcher用于监控文件和目录的状态
- 能够监控特定目录和文件的状态
- 能够同时对多个目录和文件进行监控
- 当目录或者文件发生改变时将触发信号
- 可以通过信号与槽的机制捕捉信号并做出响应
//定义槽函数,监控状态变化
void Watcher::statusChanged(const QString& path)
{
//do something for the status change
}
//连接状态信号到槽函数
Watcher::Watcher(QObject* parent):QObject(parent)
{
connect(&m_watcher,SIGNAL(fileChanged(const QString&)),…) connect(&m_watcher,SIGNAL(directoryChanged(const QString&)),…)
}
//加入受监控的文件或者目录
void Watcher::addPath(QString path)
{
m_watcher.addPath(path);
}
- Qt中的文件操作
- Qt中的文件操作
- (十九)Qt中的文件操作
- Qt中的基本文件操作
- Qt中的JSON操作
- Qt中的打印操作
- Qt文件流操作
- Qt文件流操作
- Qt写文件操作
- Qt文件流操作
- Qt之文件操作
- QT 文件读写操作
- Qt 文件读写操作
- QT文件操作
- Qt文件流操作
- QT文件操作
- qt文件操作(一)
- Qt文件操作
- Elasticsearch分片查询
- Windows徽标键的使用
- git全局变量
- spring boot 热部署配置
- lis 最长上升子序列
- Qt中的文件操作
- Spring配置bean
- 菜鸟先飞之JAVA_static关键字
- apk加固原理之dex加密
- mybatis(4)--完成基本的增删改查操作
- 正式开始学习Yii框架
- 知识点9:常见的排序算法–插入排序
- wpa_supplicant/wpa_cli
- hashmap知识点