我们通过一个小案例来实现文件的读写工作:
读文件
read按钮是读入文本,write是写入文本
首先我们将read按钮转到槽
需要添加头文件:
#include<QFile>
#include<QFileDialog>
然后写上槽函数代码:
void Widget::on_pushButton_clicked()
{
QString path=QFileDialog::getOpenFileName(this,"open","../");//获取读入文件的路径表示可
//以读入所有类型的文
//件,也可以指定文件类型
if(path.isEmpty()==false)//如果非空
{
QFile file(path);//创建文件对象
//只读方式,默认只读UTF-8
bool isok=file.open(QIODevice::ReadOnly);//以只读的方式打开
if(isok)
{
//读文件,一次性读完
// QByteArray array=file.readAll();//因为这个方法返回的是一个字节数组
//一行一行读
QByteArray array;
while(file.atEnd()==false)
{
array+=file.readLine();
}
//显示到编辑区
ui->textEdit->setText(array);
}
file.close();//关闭文件
}
}
有两种方法,一种是一次性读完:readdAll,一种是一行一行读:readLine
写文件
将wirte按钮转到槽
void Widget::on_pushButton_2_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)
{
//获取编辑区内容
QString str=ui->textEdit->toPlainText();
file.write(str.toUtf8());
//file.write(str.toStdString().data());//将String类型转换成char*类型,也是UTF8
}
file.close();
}
}
注意了,将编辑区内容转换成UTF8的方法有两种,上面有写,因为QT都是UTF8编码