QFile f

1.readall

#include "widget.h"
#include "ui_widget.h"
#include <QFileDialog>
#include <QMessageBox>
#include <QTextCodec> Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
connect(ui->selectFile, &QPushButton::clicked, this, [=](){
QString filename = QFileDialog::getOpenFileName(this,"open file","d:\\");
if (filename.isEmpty()) {
QMessageBox::warning(this,"warnnig","select file failed");
return;
}
ui->lineEdit->setText(filename); // 创建文件对象
// 默认读取文件格式:utf8
QFile file(filename);
//QTextCodec* codec = QTextCodec::codecForName("gbk");
// 指定打开方式
bool isOk = file.open(QFile::ReadOnly);
if (!isOk) {
QMessageBox::critical(this,"ERROR","file open failed");
return;
}
// 读文件
QByteArray array = file.readAll();
// 显示到文本框
//ui->textEdit->setText(codec->toUnicode(array));
ui->textEdit->setText(array);
// 关闭文件
file.close();
}); } Widget::~Widget()
{
delete ui;
}

2.readline

#include "widget.h"
#include "ui_widget.h"
#include <QFileDialog>
#include <QMessageBox>
#include <QTextCodec> Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
connect(ui->selectFile, &QPushButton::clicked, this, [=](){
QString filename = QFileDialog::getOpenFileName(this,"open file","d:\\");
if (filename.isEmpty()) {
QMessageBox::warning(this,"warnnig","select file failed");
return;
}
ui->lineEdit->setText(filename); // 创建文件对象
// 默认读取文件格式:utf8
QFile file(filename);
//QTextCodec* codec = QTextCodec::codecForName("gbk");
// 指定打开方式
bool isOk = file.open(QFile::ReadOnly);
if (!isOk) {
QMessageBox::critical(this,"ERROR","file open failed");
return;
}
// 读文件
QByteArray array;
while(!file.atEnd()) {
array += file.readLine();
}
// 显示到文本框
//ui->textEdit->setText(codec->toUnicode(array));
ui->textEdit->setText(array);
// 关闭文件
file.close();
}); } Widget::~Widget()
{
delete ui;
}

readline

QByteArray

https://blog.csdn.net/ecourse/article/details/80575691

QByteArray就是一个字节数组。类似于unsigned char[],什么数据都能保存。
而QString是一个字符串,其内部其实也是unsigned char[],但是这个数组是用于保存unicode字符的数组。对QString进行操作的时候,是按照字符串的角度来进行调用的。QString自动完成了一些字符串到字节数组的转换工作。

文件流

1、文本流 QTextStream

操作的数据类型:基础数据类型:int ,float ,string

侧重于文本的读写

属于轻量级的流操作

#include "widget.h"
#include "ui_widget.h"
#include <QFileDialog>
#include <QMessageBox>
#include <QTextCodec>
#include <QTextStream>
#include <QDataStream> Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
connect(ui->selectFile, &QPushButton::clicked, this, [=](){
QString filename = QFileDialog::getOpenFileName(this,"open file","d:\\");
if (filename.isEmpty()) {
QMessageBox::warning(this,"warnnig","select file failed");
return;
}
ui->lineEdit->setText(filename); // 创建文件对象
// 默认读取文件格式:utf8
QFile file(filename);
//QTextCodec* codec = QTextCodec::codecForName("gbk");
// 指定打开方式
bool isOk = file.open(QFile::ReadOnly);
if (!isOk) {
QMessageBox::critical(this,"ERROR","file open failed");
return;
} QTextStream stream(&file); // 设置IO设备给流对象
QString array;
while(!stream.atEnd()) {
array += stream.readLine();
} // 显示到文本框
//ui->textEdit->setText(codec->toUnicode(array));
ui->textEdit->setText(array);
// 关闭文件
file.close();
}); } Widget::~Widget()
{
delete ui;
}
#include "widget.h"
#include "ui_widget.h"
#include <QFileDialog>
#include <QMessageBox>
#include <QTextCodec>
#include <QTextStream>
#include <QDataStream>
#include <QDebug> Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this); QFile f("D:\\aaa.txt");
f.open(QFile::WriteOnly);
QTextStream txt(&f);
// 写文件
txt << QString("hello; world") << ;
f.close(); QString buf;
f.open(QFile::ReadOnly);
txt.setDevice(&f);
txt >> buf;
qDebug() << buf.toUtf8().data(); //hello;
} 
Widget::~Widget() { delete ui; }

2、数据流 QDataStream

操作的数据类型:QImage,QPoint,QRect,不依赖于平台

侧重于数据格式和类型

QTextStream 能做的事,QDataStream 都能做

可以对特定格式的数据类型进行完美的输入输出

几乎Qt 支持的所有数据类型都可以使用QDataStream 进行操作

#include "widget.h"
#include "ui_widget.h"
#include <QFileDialog>
#include <QMessageBox>
#include <QTextCodec>
#include <QTextStream>
#include <QDataStream>
#include <QDebug> Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this); // QFile f("D:\\aaa.txt");
// f.open(QFile::WriteOnly);
// QTextStream txt(&f);
// // 写文件
// txt << QString("hello; world") << 123456;
// f.close(); // QString buf;
// f.open(QFile::ReadOnly);
// txt.setDevice(&f);
// txt >> buf;
// qDebug() << buf.toUtf8().data();
QFile f("D:\\aaa.txt");
f.open(QFile::WriteOnly);
QDataStream txt(&f);
// 写文件
txt << QString("hello; world") << ;
f.close(); QString buf;
int num;
f.open(QFile::ReadOnly);
txt.setDevice(&f);
txt >> buf >> num;
qDebug() << buf.toUtf8().data() << num; // hello; world 123456
} Widget::~Widget()
{
delete ui;
}
    QImage image("d:\\up.png");
QByteArray arr;
QDataStream ss(&arr,QIODevice::ReadWrite);
ss << image;
qDebug() << arr;

QFileInfo

#include "widget.h"
#include "ui_widget.h"
#include <QFileDialog>
#include <QMessageBox>
#include <QTextCodec>
#include <QTextStream>
#include <QDataStream>
#include <QDebug>
#include <QFileInfo>
#include <QDateTime> Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QFileInfo info("d:\\up.png");
qDebug() << info.size();
qDebug() << info.path();
qDebug() << info.lastModified().toString("yyyy-mm-dd");
} Widget::~Widget()
{
delete ui;
}

15378

"d:/"

"2018-28-28"

QIODevice

(十四)QFile操作,QByteArray,文件流操作,QTextStream,QDataStream,QFileInfo, QIODevice的更多相关文章

  1. delphi 基础之三 文件流操作

    文件流操作 Delphi操作流文件:什么是流?流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具.在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的, ...

  2. c#基础语言编程-文件流操作

    引言 在System.IO 命名空间下提供了一系列的类,我们可以通过相应的类进行文件.目录.数据流的操作. 1.File类:提供用于创建.复制.删除.移动和打开文件的静态方法.File类 2.File ...

  3. .NET中的IO操作之文件流

    读操作 //1.创建文件流 FileStream fsRead =new FileStream("1.txt",FileMode.Open); //2.创建缓冲区,正常情况下,是不 ...

  4. .NET中的IO操作之文件流(一)

    读操作 //1.创建文件流 FileStream fsRead =new FileStream("1.txt",FileMode.Open); //2.创建缓冲区,正常情况下,是不 ...

  5. (C/C++学习)2.C语言中文件流操作基本函数总结

    函数所在头文件:stdio.h 说明:前半部分主要为对各个文件流操作函数的例举,后半部分着重于上机运行分析.文中部分引用自王桂林老师的C/C++课件. 1.FIELE *fopen(const cha ...

  6. 孤荷凌寒自学python第三十四天python的文件操作对file类的对象学习

     孤荷凌寒自学python第三十四天python的文件操作对file类的对象学习 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.close() 当一个file对象执行此方法时,将关闭当前 ...

  7. Python—集合的操作、文件的操作

    1.集合的操作 2.文件的操作 1.集合的操作 定义: 1.不同元素组成,自动去重 2.无序 3.集合中的元素必须是不可变类型 1.集合的定义: >>> s1 = set('abcd ...

  8. c++ ofstream & ifstream文件流操作

    ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; //ofstream & ifstream inherit from istream class ...

  9. ndk学习之c++语言基础复习----C++容器、类型转换、异常与文件流操作

    继续来复习C++,比较枯燥,但是这是扎实掌握NDK开发的必经之路,不容小觑. 容器: 容器,就是用来存放东西的盒子. 常用的数据结构包括:数组array, 链表list, 树tree, 栈stack, ...

随机推荐

  1. 【AO笔记】有关使用AO基于shp文件创建网络数据集的一个细节

    前些日子,和群友交流时提及shp文件创建单一网络数据集的创建问题. 由于项目需求,用shp文件创建网络合适,所以不得不去找一些古老的代码资料... 以前的研究中,创建网络数据集是根据IDatasetC ...

  2. Android 简单统计文本文件字符数、单词数、行数Demo

    做的demo是统计文本文件的字符数.单词数.行数的,首先呢,我们必须要有一个文本文件.所以我们要么创建一个文本文件,并保存,然后再解析:要么就提前把文本文件先放到模拟器上,然后检索到文本名再进行解析. ...

  3. webstorm2018.1 汉化

    https://github.com/pingfangx/TranslatorX 这个百度云 选择webstorm 选择勾选的文件 选择你下载webstorm 的版本 我下载的是2018.1的 之后等 ...

  4. 商米D1S一体机设置搜狗手写输入法图解

    按照下图步骤,一步步设置即可,询问全新的时候需要点击允许. 商米应用市场搜索下载搜狗输入法,并安装 安装完成后,点击桌面搜狗输入法,选择启用搜狗输入法,如图 点击启用后,在虚拟键盘中选择搜狗输入法,并 ...

  5. pipe size设置

    我所用的软件架构,使用pipe来实现线程之间的大量数据的传输.在实际操作中,pipe中传输的是数据的指针,而不是数据本身.  但是在调试过程中,我发现,如果我尝试往pipe里面write10000个指 ...

  6. 'Attempt to create two animations for cell' iOS

    我是在对一个UITableView 一起进行 reloadRows和reloadSections 的操作的时候 出现的

  7. Surging微服务的注意事项

    做个记录 1.Service的方法必须是异步方法 这个是同事发现的,非异步方法Swagger会用不了 2.仓储层不能用接口 这个是自己做的,根据同事的例子,本来好好的,想着在仓储层给加个接口,然后用接 ...

  8. 设置MYSQL数据库编码为UTF-8

    设置MYSQL数据库编码为UTF-8   1.  编辑MySql的配置文件 MySql的配置文件Windows下一般在系统目录下或者在MySql的安装目录下名字叫my.ini,可以搜索,Linux下一 ...

  9. openstack 2019/4/28

    官网参考地址:https://docs.openstack.org/keystone/queens/install/index-rdo.html (但愿能看懂) 环境:这个部分解释如何按示例架构配置控 ...

  10. Cookies, Claims and Authentication in ASP.NET Core(转载)

    Most of the literature concerning the theme of authentication in ASP.NET Core focuses on the use of ...