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的操作”,分别讲解了简单的数据的存储和数据库数 ...
随机推荐
- CMake 禁用 MSVC 编译警告 C4819
warning C4819:该文件包含不能在当前代码页(936)中表示的字符.请将该文件保存为 Unicode 格式以防止数据丢失 if (win32) add_complie_options(/W4 ...
- Google C++编程规范(Google C++ Style Guide)
参考链接: Google 代码规范 C++总结 Google 开源项目风格指南--中文版 Google C++ Style Guide是一份不错的C++编码指南,我制作了一张比较全面的说明图,可以在短 ...
- 【Boost】boost.log 要点笔记
常用简写: namespace logging = boost::log; namespace src = boost::log::sources; namespace expr = boost::l ...
- SpringBoot 项目集成 knife4j
文档地址:https://doc.xiaominfo.com/ knife4j 是为 Java MVC 框架集成Swagger生成 \(Api\) 文档的增强解决方案. Swagger介绍 前后端分离 ...
- POJ 1417 True Liars (并查集+DP)
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 1556 Accepted: 457 Description After havi ...
- Codeforces Round #664 题解(A ~ C)
1395A - Boboniu Likes to Color Balls 如果在r,b,g,w中小于或等于一个奇数,则可以将其定为回文. 否则,请进行一次操作(如果可以),然后检查上述情况. 进行多次 ...
- POJ - 1113 Wall (凸包模板) Graham Scan 算法实现
Description Once upon a time there was a greedy King who ordered his chief Architect to build a wall ...
- vue-element-admin完整开源项目介绍、本地部署和初步探索
1 说明: 1.1 从一个广受好评的开源项目:vue-element-admin的本地化,来初步分析vue的相关知识. 2 github地址和下载本地部署: https://github.com/Pa ...
- 如何使用Oracle Enterprise Manager Database Express连接到PDB数据库
1.问题 1.1重复弹出登录框,无法登陆 关闭登录框,显示invalid container name 1.2 重启后PDB数据库处于mounted挂载状态,未打开导致使用 Enterprise 登陆 ...
- 如何查找SpringBoot应用中的请求路径(不使用idea)
背景 昨天有个同事向我咨询某个接口的物理表是哪个,由于公司业务较多.这块业务的确不是我负责的,也没有使用idea不能全局搜索(eclipse搜不到jar内的字符串),也就回复了不清楚. 除了自己写代码 ...