Qt文件读写的天花板QFile和QTextStream搭配第二集
想看更多精彩内容内容,锁定:
文件读写共计3集,想看全集记得去Qt专栏
一、QFile和QTextStream简介
QTextStream fileCtrl(&file)
注意点 -》必须添加下面这个函数
fileCtrl.setAutoDetectUnicode(true);//自动检测Unicode才能显示汉字
fileCtrl<<getText;//写入文本流 【文本流有多种写入方式,推荐这种】
二、QFile和QTextStream举例
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFile>
#include<QDir>
#include<QTextStream>
#include<QFileDialog>
#include<QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
//打开文件
void MainWindow::on_openfile_clicked()
{
QString curPath =QDir::currentPath();//获取当前路径
qDebug()<<"curPath="<<curPath<<endl;//默认编译路径
QString openTitle ="打开一个文件";
QString filter ="程序文件(*.h *.cpp);;文本文件(*.txt);;所有文件(*.*)";//文件过滤器
QString FilePath = QFileDialog::getOpenFileName(this,openTitle,curPath,filter);
qDebug()<<"FilePath="<<FilePath<<endl;
if(FilePath.isEmpty()){
return;
}
myCreatePublicOpenTextByIODevice(FilePath);
}
//文件读写采用QTextStream方式
bool MainWindow::myCreatePublicOpenTextByIODevice(const QString &FilenamePath)
{
QFile file(FilenamePath);
if(!file.exists())//文件不存在
{
qDebug()<<file.errorString()<<endl;
return false;
}
//打开文件:只读,识别\n符
if(!file.open(QIODevice::ReadOnly|QIODevice::Text))
return false;//文件打开失败
//创建文本流
QTextStream fileCtrl(&file);
fileCtrl.setAutoDetectUnicode(true);//自动检测Unicode才能显示汉字
//追加方式显示
//ui->plainTextEdit->appendPlainText(file.readAll());//一次性读完
//每次读取有一行
qDebug()<<"filename="<<file.fileName()<<endl;
while(!fileCtrl.atEnd())
{
ui->plainTextEdit->appendPlainText(fileCtrl.readLine());
}
file.close();//关闭文件
return true;
}
//文件另存
void MainWindow::on_filesave_clicked()
{
QString curPath =QDir::currentPath();//获取当前路径
qDebug()<<"curPath="<<curPath<<endl;//默认编译路径
QString openTitle ="另存文件";
QString filter ="程序文件(*.h *.cpp);;文本文件(*.txt);;所有文件(*.*)";//文件过滤器
QString FilePath = QFileDialog::getOpenFileName(this,openTitle,curPath,filter);
qDebug()<<"FilePath="<<FilePath<<endl;
if(FilePath.isEmpty()){
return;
}
myCreatePublicSaveFile(FilePath);
}
bool MainWindow::myCreatePublicSaveFile(const QString &FilenamePath)
{
QFile file(FilenamePath);
if(!file.exists())//文件不存在
{
qDebug()<<file.errorString()<<endl;
return false;
}
//打开文件:只读,识别\n符
if(!file.open(QIODevice::WriteOnly|QIODevice::Text))
return false;//文件打开失败
QTextStream fileCtrl(&file);
fileCtrl.setAutoDetectUnicode(true);//自动检测Unicode才能显示汉字
QString getText = ui->plainTextEdit->toPlainText();//获取整个内容
fileCtrl<<getText;//写入文本流
file.close();//关闭文件
return true;
}
打开一个文件,显示文件内容
记得锁定专栏,一直更新哦