菜鸟学习系列(1)Qt学习之读写文件,QFile,QDataStream
完成文件管理功能,使用qt编写读写文件。用户调用函数,给定读写的路径以及double类型的指针数组,把数据写入指定目录的磁盘。
首先要学会使用几个类,QFile,QDataStream,QTextStream,QFileInfo。可以多使用Qt自带的帮助文档。以下是代码:Widget.h中
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
bool writeData(QString strSetDir,QString strFileName,QString Suffix,double* pData,int nLen);
int readData(QString strSetDir,QString strFileName,QString Suffix,double* pData,int& nLen);
private slots:
void on_pushButton_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
widget.cpp 代码:
#include "widget.h"
#include "ui_widget.h"
#include <QDataStream>
#include <QFile>
#include <QFileInfo>
#include <QDebug>
//调试的时候经常使用如下定义:
#define cout qDebug()<<"["<<__FILE__<<":"<<__LINE__<<"]"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
bool Widget::writeData(QString SetDir,QString strFileName,QString Suffix ,double* pData,int nLen)
{
//创建文件
QFile file(SetDir+strFileName+Suffix);
bool isok = file.open(QIODevice::WriteOnly|QIODevice::Text);
if(isok == true)
{
//创建数据流,和file关联,往数据流输入数据相当于向文件写数据
QDataStream stream(&file);
int i ;
for(i=0;i<=nLen;i++)
stream<<pData[i];
}
file.close();
return true;
}
int Widget::readData(QString SetDir,QString strFileName,QString Suffix ,double* pRData,int& nLen)
{
QFile file(SetDir+strFileName+Suffix);
bool isok = file.open(QIODevice::ReadOnly|QIODevice::Text);
if(isok == true)
{
//创建数据流,和file关联,往数据流输入数据相当于向文件写数据
QDataStream stream(&file);
int i ;
for(i=0;i<=nLen;i++)
stream>>pRData[i];
cout<<pRData[0];
cout<<pRData[1];
}
file.close();
}
void Widget::on_pushButton_clicked()
{
double array[3]= {1.0,2.0,3.0};//数组就是个指针
writeData("../","test",".txt",array,3);
double q[20];
readData("../","test",".txt",q,3);
}
数组就是指针,如果定义成:
double* array[3]则说明是定义了三个数组指针,数组里面是三个指针,数组本身就是指针,数组名字是指针地址,名字[]代表值。
分享学习