Qt笔记——QFile,QDataStream,QTextStream
QFile
#ifndef WIDGET_H
#define WIDGET_H #include <QWidget> namespace Ui {
class Widget;
} class Widget : public QWidget
{
Q_OBJECT public:
explicit Widget(QWidget *parent = );
~Widget(); private slots:
void on_readButton_clicked(); void on_writeButton_clicked(); private:
Ui::Widget *ui;
}; #endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include <QFileDialog>
#include <QFileInfo>
#include <QDateTime>
#include <QDebug>
#include <QDataStream> Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
} Widget::~Widget()
{
delete ui;
} void Widget::on_readButton_clicked()
{
QString path = QFileDialog::getOpenFileName(this,
"open",
"../",
"TXT(*.txt)");
if(path.isEmpty() == false)
{
QFile file(path);
bool isOK = file.open(QIODevice::ReadOnly);
if(isOK == true)
{
#if 0
//默认只识别utf8编码
QByteArray array = file.readAll();
//ui->textEdit->setText(QString(array));
ui->textEdit->setText(array);
#endif
QByteArray array;
while (file.atEnd() == false)
{
array += file.readLine();
}
ui->textEdit->setText(array); }
file.close(); QFileInfo info(path);
qDebug()<<info.fileName();
qDebug()<<info.suffix();
qDebug()<<info.size();
qDebug()<<info.created().toString("yyyy-MM-dd hh:mm:ss");
}
} void Widget::on_writeButton_clicked()
{
QString path = QFileDialog::getSaveFileName(this,"save","../","TXT(*.txt)");
if(path.isEmpty() == false)
{
QFile file;
file.setFileName(path);
bool isOk = file.open(QIODevice::WriteOnly);
if(isOk == true)
{
QString str = ui->textEdit->toPlainText();
file.write(str.toUtf8());
//file.write((str.toStdString().data()));
}
file.close();
}
}
QDataStream
#ifndef WIDGET_H
#define WIDGET_H #include <QWidget> namespace Ui {
class Widget;
} class Widget : public QWidget
{
Q_OBJECT public:
explicit Widget(QWidget *parent = );
~Widget();
void writeData();
void readData();
private:
Ui::Widget *ui;
}; #endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include <QDataStream>
#include <QTextStream>
#include <QFile>
#include <QDebug> #define cout qDebug()<<"["<<__FILE__<<":"<<__LINE__<<"]"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
writeData();
readData();
} Widget::~Widget()
{
delete ui;
}
void Widget::writeData()
{
QFile file("../fff.txt");
bool isOK = file.open(QIODevice::WriteOnly);
if (true == isOK)
{
//创建数据流,和file文件关联
//往数据流中写数据,相当于往文件里写数据 QDataStream stream(&file);
stream<<QString("hello world")<<; }
file.close();
} void Widget::readData()
{
QFile file("../fff.txt");
bool isOK = file.open(QIODevice::ReadOnly);
if (true == isOK)
{
//创建数据流,和file文件关联
//往数据流中读数据,相当于往文件里写数据
QString str;
int a;
QDataStream stream(&file);
stream>>str>>a;
cout<<str<<a; }
file.close();
}
QTextStream
#ifndef WIDGET_H
#define WIDGET_H #include <QWidget> namespace Ui {
class Widget;
} class Widget : public QWidget
{
Q_OBJECT public:
explicit Widget(QWidget *parent = );
~Widget();
void writeData();
void readData(); private slots:
void on_pushButton_clicked(); private:
Ui::Widget *ui;
}; #endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include <QFile>
#include <QTextStream>
#include <QDebug>
#include <QFileDialog>
#define cout qDebug()<<"["<<__FILE__<<":"<<__LINE__<<"]"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
writeData();
readData();
} Widget::~Widget()
{
delete ui;
} void Widget::writeData()
{
QFile file;
file.setFileName("../demo.txt"); bool isOK = file.open(QIODevice::WriteOnly);
if(true == isOK)
{
QTextStream stream(&file);
//指定编码
stream.setCodec("UTF-8");
stream << QString("hello world")<<;
file.close();
}
} void Widget::readData()
{
//这么读有问题
QFile file;
file.setFileName("../demo.txt"); bool isOK = file.open(QIODevice::ReadOnly);
if(true == isOK)
{
QTextStream stream(&file);
//指定编码
stream.setCodec("UTF-8");
QString str;
int a;
stream >>str>>a;
cout<<str<<a;
file.close();
}
} void Widget::on_pushButton_clicked()
{
QString path = QFileDialog::getOpenFileName(this,
"read",
"../"
);
if(false == path.isEmpty())
{
QFile file;
file.setFileName(path);
bool isOK = file.open(QIODevice::ReadOnly);
if(true == isOK)
{
QTextStream stream(&file);
stream.setCodec("UTF-8");
QString str = stream.readAll();
ui->textEdit->setText(str);
file.close();
}
} }
QBuffer
#ifndef WIDGET_H
#define WIDGET_H #include <QWidget> namespace Ui {
class Widget;
} class Widget : public QWidget
{
Q_OBJECT public:
explicit Widget(QWidget *parent = );
~Widget(); private:
Ui::Widget *ui;
}; #endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include <QBuffer>//内存文件
#include <QDebug> Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this); QBuffer memFile;
memFile.open(QIODevice::WriteOnly); memFile.write("hello");
memFile.write("world"); memFile.close(); qDebug()<<memFile.buffer(); QBuffer memFile1;
memFile1.open(QIODevice::WriteOnly);
QDataStream stream(&memFile1);
stream<<QString("测试")<<;
memFile1.close(); qDebug()<<QString(memFile.buffer()).toUtf8().data();//输出有问题
//输出正确
memFile1.open(QIODevice::ReadOnly);
QDataStream in(&memFile1);
QString str;
int a;
in>>str>>a;
memFile1.close();
qDebug()<<str.toUtf8().data()<<a;
} Widget::~Widget()
{
delete ui;
}
Qt笔记——QFile,QDataStream,QTextStream的更多相关文章
- QFile QDataStream QTextStream
#include <QCoreApplication> #include <QMap> #include <QFile> #include <QDir> ...
- Qt:QFile、QIODevice
QFile 0.说明 QFile是读写文件的类,这里的文件包括文本文件.二进制文件.资源文件. 通常情况下,文件读写使用QFile.QTextStream.QDataStream就够了. file n ...
- QT笔记之VS2010 Qt中导入qrc资源文件
转载1:http://qimo601.iteye.com/blog/1404693 转载2:http://blog.sina.com.cn/s/blog_92cde3060101lobm.html 转 ...
- QT笔记之VS2012 TCP传送文件
注意:工程监理后,因为用到网路,所以要加入对应的库 服务器: .h #ifndef TCPFILE_H #define TCPFILE_H #include <QtWidgets/QWidget ...
- QT笔记之解决QT5.2.0和VS2012中文乱码 以及在Qt Creator中文报错
转载:http://bbs.csdn.net/topics/390750169 VS2012 中文乱码 1.方法一: 包含头文件 #include <QTextCodec> ....... ...
- QT笔记之VS开发程序遇到的问题
转载:http://www.cnblogs.com/li-peng/p/3644812.html 转载:http://www.cnblogs.com/csuftzzk/p/VS_Qt_Experien ...
- QT笔记之不规则窗口的实现
QT实现的不规则窗口,是根据图片的形状显示 1.去标题栏 2.设置窗口背景为透明色 3.最后给窗口设置背景色 注:背景图为镂空的 格式为.png 图片资源下载:http://pan.baidu.com ...
- QT笔记之模态对话框及非模态对话框
模态对话框(Modal Dialog)与非模态对话框(Modeless Dialog)的概念不是Qt所独有的,在各种不同的平台下都存在.又有叫法是称为模式对话框,无模式对话框等.所谓模态对话框就是在其 ...
- QT笔记之QLineEdit自动补全以及控件提升
转载:http://www.cnblogs.com/csuftzzk/p/qss_lineedit_completer.html?utm_source=tuicool&utm_medium=r ...
随机推荐
- html5实现web app摇一摇换歌
微信可以摇歌曲,根据声音识别出歌曲,然后返回歌曲信息,利用html5的deviceOrientation特性和deviceMotion事件也可以在web app上实现类似于微信摇一摇的功能,原生的ap ...
- redis-20180118
1.redis hash 100% 2.redis list 100% 3.redis sentinel 20%
- div clear清除浮动产生的影响 被受影响的div加上清除浮动后 不会填充前一个div浮动后空出的位置
- JS判断页面是否加载完成
用 document.readyState == "complete" 判断页面是否加载完成 传回XML 文件资料的目前状况. 基本语法intState = xmlDocument ...
- G D 3 2 预 处 理 符 号 配 置 中 定 义
Is mainly used in MCU and peripherals to choose, without having to modify macro definitions in the c ...
- 遇到问题---java---git下载的maven项目web用tomcat发布时不带子项目
遇到的情况是用git下载maven项目,然后用mvn eclipse:eclipse命令标记为eclipse项目之后,使用maven插件导入之后用tomcat发布运行,发现maven关联的几个子项目没 ...
- python3创建目录
感觉python3最好用的创建目录函数是os.makedirs,它可以设置在多级目录不存在时自动创建,已经存在也不抛出异常. import os os.makedirs('hello/hello1/h ...
- 用filters定制化spring的包扫描
Fiter的信息如下: Filter的类型有:annotation(这是spring默认的),assignable,aspectj, regex,custom 首先看一下我这个demo的目录结构: 上 ...
- Join an instance to my AWS Directory Service domain
https://amazonaws-china.com/cn/premiumsupport/knowledge-center/ec2-systems-manager-dx-domain/ https: ...
- Linux下设置防火墙(开启端口)
1.修改文件/etc/sysconfig/iptables 在文件中加入如下内容,目的是对外界开放7001端口 -A RH-Firewall-1-INPUT -m state --state NEW ...