C/C++ Qt 基本文件读写方法
Qt文件操作有两种方式,第一种使用QFile类的IODevice读写功能直接读写,第二种是利用 QFile和QTextStream结合起来,用流的方式进行文件读写。
第一种,利用QFile中的相关函数,实现对文件的读写操作,QFile会调用IODevice设备,从而实现文件读写。
QT基本文件读写: 通过QFile实现文本文件读写操作.
#include <QCoreApplication>
#include <iostream>
#include <QFile>
#include <QString>
#include <QTextStream>
// 一次读入所有文本
bool ReadFileOnly(const QString &file_path)
{
QFile ptr(file_path);
// 文件是否存在
if(!ptr.exists())
{
return false;
}
// 文件是否打开
/*
ReadOnly 以只读方式打开
WriteOnly 以只写方式打开
ReadWrite 读写方式打开
Append 以追加方式打开
Truncate 以截取方式打开(原有内容被清空)
Text 以文件方式打开
*/
if(!ptr.open(QIODevice::ReadWrite | QIODevice::Text))
{
return false;
}
QString text = ptr.readAll();
std::cout << text.toStdString() << std::endl;
ptr.close();
}
// 追加写入文本
bool WriteFileOnly(const QString &file_path, QString save)
{
// 如果参数为空则返回假
if(file_path.isEmpty() && save.isEmpty())
{
return false;
}
QFile ptr(file_path);
if(!ptr.open(QIODevice::Append | QIODevice::Text))
{
return false;
}
QByteArray str_bytes = save.toUtf8();
ptr.write(str_bytes,str_bytes.length());
ptr.close();
return true;
}
QTextStream 实现流读写: 直接使用流写入,可以使用<< 运算符,方便的写入文本。
#include <QCoreApplication>
#include <iostream>
#include <QFile>
#include <QString>
#include <QTextStream>
#include <QTextCodec>
// 计算文件行数
qint32 get_file_count(const QString &file_path)
{
QFile ptr(file_path);
qint32 count = 0;
if(ptr.open(QIODevice::ReadOnly | QIODevice::Text))
{
QTextStream in(&ptr);
// 自动检测unicode编码,显示中文
in.setAutoDetectUnicode(true);
while(!in.atEnd())
{
QString line = in.readLine();
std::cout << line.toStdString() << std::endl;
count = count +1;
}
return count;
}
return 0;
}
// 追加写入数据
bool write_file_stream(const QString &file_path, QString save)
{
QFile ptr(file_path);
if(ptr.open(QIODevice::Append | QIODevice::Text))
{
QTextStream in(&ptr);
in << save;
}
ptr.close();
return true;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 设置编码
QTextCodec *codec = QTextCodec::codecForName("utf-8");
QTextCodec::setCodecForLocale(codec);
// 流写入
write_file_stream("d://test.txt","hello lyshark");
write_file_stream("d://test.txt","你好,世界");
// 取文本长度
qint32 count = get_file_count("d://test.txt");
std::cout << "line = > " << count << std::endl;
return a.exec();
}
C/C++ Qt 基本文件读写方法的更多相关文章
- 【QT】文件读写操作
读取输出: QFile file("D:/Englishpath/QTprojects/1.dat"); if(!file.open(QIODevice::ReadOnly)) { ...
- Qt QFile文件读写
QFile 需要添加 #Include <QFile> 集成至QIODevice 打开一个文件有3种方式QIODevice::(ReadOnly/WriteOnly/ReadWrite) ...
- 文件读写方法1.FileInputStream和FileOutputStream
package fileTest; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundEx ...
- android菜鸟学习笔记17----Android数据存储(一)文件读写
假如有如下需求,要求能够记录用户输入的用户名和密码,下次登录时,能直接获取之前保存的用户名密码,并在相应的EditText中显示. 要保存用户输入的数据,最先想到的应该就是文件读写了. 通过对andr ...
- QXmlStreamReader/QXmlStreamWriter实现Qt下xml文件读写
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QXmlStreamReader/QXmlStreamWriter实现Qt下xml文件读写 ...
- Qt下存储读写应用程序设置的三种方法
一.简介 用户对应用程序经常有这样的要求:要求它能记住它的settings,比如窗口大小.位置和密码等等.有三种方法可以实现: 使用注册表: 使用配置文件(.ini): 使用自定义文件(例如.txt) ...
- Qt文件读写操作
原文地址:https://www.cnblogs.com/flowingwind/p/8336159.html QFile Class 1.read读文件 加载文件对象 QFile file(&qu ...
- 一篇文章快速搞懂Qt文件读写操作
导读:Qt当中使用QFile类对文件进行读写操作,对文本文件也可以与QTextStream一起使用,这样读写操作会更加简便.QFileInfo可以用来获取文件的信息.QDir可以用于对文件夹进行操作. ...
- C#读写文件的方法汇总_C#教程_脚本之家
C#读写文件的方法汇总_C#教程_脚本之家 http://www.jb51.net/article/34936.htm
- Android读写assets、raw、sdard和工程文件的方法
Android开发离不开对文件的操作,前面的文章“Android简易数据存储之SharedPreferences”和“Android数据存储之SQLite的操作”,分别讲解了简单的数据的存储和数据库数 ...
随机推荐
- 关于“Github上传以及Clone时发生的 Failed to connect to github.com port 443: Timed out 问题解法记录
本文是记录关于如何解决 "Github上传以及Clone时发生的 Failed to connect to github.com port 443: Timed out 错误" 看 ...
- 记一次github上传文件夹(项目)的历程和踩坑
1.git官网登录自己的git账号(没有就自己注册一个):https://github.com/ 2.首先是下载安装好git软件:https://gitforwindows.org/ (1)这里要注 ...
- <vue 组件 2、组件参数传递>
代码结构 一. 01-父组件向子组件传递数据 1. 效果 展示出来的数据都是父组件传给子组件的数据 2.代码 01-父组件向子组件传递数据.html <!DOCTYPE html> ...
- Vue3 Diff算法之最长递增子序列,学不会来砍我!
专栏分享:vue2源码专栏,vue3源码专栏,vue router源码专栏,玩具项目专栏,硬核推荐 欢迎各位ITer关注点赞收藏 Vue2 Diff算法可以参考[Vue2.x源码系列08]Diff算法 ...
- Kafka 社区KIP-405中文译文(分层存储)
原文链接:https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage 译者:Kafka KIP- ...
- php基础之PHP语言学习介绍
前言 PHP是网络安全中需要掌握的一门语言,但是就这么一点儿时间学网络安全,所以不可能特别精通PHP,这里并不是说要求你精通PHP,但是需要对于一些基础代码能够认识.能够编写那么就可以了. 同时,这里 ...
- Liunx常用操作(六)-压缩与解压缩(打包/解包)
liunx上面的压缩与解压缩(打包/解包)有以下几种命令可以实现 源文件001.txt 如下: 一.zip 特点:方便的与Windows之间通用 打包命令: zip 001.zip 001.txt 解 ...
- 搬运 |(有刀🔪慎入)kwdnx、谷雨、更漏与我
本打算把文案投到官微,但官微说文案太长了,只能放删减版: 那就把文案放博客上吧 写于 癸卯年 戊午月 己亥日. 四年前的冬天我们初见,大家都是青涩的未成年人:在少年班团建的喧闹中,谷雨谈论高数竞赛,k ...
- mybatis plus 获取新增实体的主键
转载请注明出处: mybatis plus 新增实体对象调用的是 IService 接口中的 save 方法: default boolean save(T entity) { return SqlH ...
- 你不知道的JavaScript APIs
前言 在本文中,将介绍一些鲜为人知但却非常有用的API,如: Page Visibility API Web Share API Broadcast Channel API International ...