Qt文件操作QFile
时间:2022-07-24
本文章向大家介绍Qt文件操作QFile,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
先导
因为有需求使用
Qt
的文件I/O
操作,所以做此记录以供后用
使用
简单使用以及说明
简单的使用基本上分4步:
- 定义文件变量
- 打开文件
- 执行文件
I/O
操作 - 关闭文件
简单使用读取文件:
QFile file("your file path");
file.open(QFile::ReadOnly);
QByteArray buf;
while(file.read(buf.data(),1024)>0){
cout<<buf;
buf.clear();
}
file.close();
上述文件读取操作中,使用的是C++
习惯下的read
函数,其使用也和C++
的read
函数差不多,需要讲解一下的是QFile
的open
函数的参数,有以下的表列
参数 |
说明 |
---|---|
NotOpen |
不打开文件 |
ReadOnly |
只读 |
WriteOnly |
只写 |
ReadWrite |
可读写 |
Append |
追加 |
Truncate |
尽可能在打开文件前删除 |
Text |
限定文本操作,读文件的话结束符翻译为文本的n,写文件则结尾时写入当前系统的文本结束符,例如win的nr |
Unbuffered |
不能使用缓存流I/O |
NewOnly |
在创建文件的时候确保文件是不存在的,不然文件不能打开 |
ExistingOnly |
在读取文件是确保文件是存在的,不然文件不能打开 |
简单写入文件
QFile file("your file path");
file.open(QFile::WriteOnly | QFile::Truncate);
QByteArray buf("text to write");
file.write(buf);
file.close();
使用stream进行读写
使用stream
进行读写时可以使用输入(>>
)输出(<<
)流符号进行格式化输入输出,读写方便,在Qt
的文件I/O
中可以使用QTextStream
和QDateStream
来对文件进行操作
读取文件:
QFile file("in.txt");
if (!file.open(QFile::ReadOnly | QFile::Text))
return;
QByteArray buf;
QTextStream in(&file);
while (!in.atEnd()) {
in>>buf.data();
cout<<buf;
buf.clear();
}
file.close();
写入文件:
QFile file("out.txt");
if (!file.open(QFile::WriteOnly | QFile::Text))
return;
QTextStream out(&file);
out << "a=" << 1 << "n";
out.flush();
file.close();
后记
Qt
的文件操作对于一个应用软件来说是一个重要的使用方式,虽然上面讲述了Qt
文件I/O
的基本操作,但是其使用方式还有很多,这仅仅是最基本的使用方式而已,以后还有很多东西需要学习的
- spark零基础学习线路指导
- MySQL数据库(十):用户授权与撤销授权
- Oracle 12c系列(二)|PDB的创建
- Spring Security 入门(四):自定义-Filter
- Go语言中Select语句用法实例
- 从Mysql备份中恢复单个表
- spark编译:构建基于hadoop的spark安装包及遇到问题总结
- Mysql忘记root密码的恢复方法
- 深入剖析Go语言编程中switch语句的使用
- MySQL中DDL、DML、DCL的那些语句
- 如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
- golang实现简单的udp协议服务端与客户端示例
- Oracle 12c系列(三)|存储资源隔离 Flex Diskgroup
- Scala的map实现key和value排序及各种排序比较等知识讨论
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- OpenCV与图像处理(四)
- 常用功能加载宏——单元格数据连接
- Nest.js 从零到壹系列(八):使用 Redis 实现登录挤出功能
- 创建常用功能加载宏
- 3分钟短文 | Linux 使用curl发起post请求的4个常用方式
- 类模块——接口
- OpenCV与图像处理(三)
- 常用功能加载宏——单元格数字转变
- OpenCV与图像处理(二)
- ECCV2020 | SOD100K:超低参数量的高效显著性目标检测算法,广义OctConv和动态权重衰减
- Rust FFI 编程 - Rust导出共享库02
- 常用功能加载宏——单元格数字格式
- 【翻译】200行代码讲透RUST FUTURES (2)
- 【Rust日报】2020-07-23 Rust 的 CI 将使用 GitHub Actions
- 【每周一库】- Tonic 基于Rust的gRPC实现