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 ...
随机推荐
- SourceTree git的管理工具使用教程1
1SourceTree是一个window系统下的Git管理工具 2设置Git 工具——选项——Git设置 3拷贝远程的项目 新建/克隆(输入远程项目的url地址) 4验证(填写用户信息) 工具——选项 ...
- scrapy使用记录
1 进入pip安装目录 python -m pip install --upgrade pip pip install Scrapy 2. 创建一个项目 scrapy startproject tes ...
- docker/qemu中是如何对设备管理的
文件系统中包括实际的磁盘中可读可写的. 容器中看到的设备是啥子呢?--docker qemu也是一样,在qemu中添加一个设备的物理意义是啥子嘛 其实设备也没啥好新奇的,不就是一个普通的文件么,然后在 ...
- SVN分支/主干Merge操作小记
一.前言 说来惭愧,鄙人从事开发多年,使用svn已经好几个年头了,但是却仅限于update.commit.compare之类的操作,最近想到github上学习别人写的NIO源码,顺便去熟悉git的使用 ...
- Struts2值栈
一.前言 很多事儿啊,就是“成也萧何败也萧何”,细想一些事儿心中有感,当然,感慨和本文毛关系都没有~想起之前有篇Struts2中值栈的博客还未完工,就着心中的波澜,狂咽一把~ 二.正文 博文基于:st ...
- 【题解】Bzoj4316小C的独立集
决定要开始学习圆方树 & 仙人掌相关姿势.加油~~ 其实感觉仙人掌本质上还是一棵树,长得也还挺优美的.很多的想法都可以往树的方面上靠,再针对仙人掌的特性做出改进.这题首先如果是在树上的话那么实 ...
- Visual Studio调试之断点技巧篇
原文链接地址:http://blog.csdn.net/Donjuan/article/details/4618717 函数断点 在前面的文章Visual Studio调试之避免单步跟踪调试模式里面我 ...
- [Leetcode] Populating next right pointer in each node ii 填充每个节点的右指针
Follow up for problem "Populating Next Right Pointers in Each Node". What if the given tre ...
- display:inline-block带来的问题及解决办法
在日常工作中,会经常遇到两个或多个元素并排排列的效果,以前会使用float等实现,float虽然方便好用,但是需要清除浮动,有时会带来意想不到的bug 而且在移动端是不推荐使用float的,所以使用d ...
- Clevo P950系列拆机
Clevo P950系列(包括神舟精盾T96/T97/T96C/T96E/T97E,炫龙耀9000,铁头人T800同模具机型)拆机 拆机恢复时间:20181203 12:28-14:58 一.普通 ...