Qt文件读写的天花板QFile和QTextStream搭配第二集

发布于:2023-01-04 ⋅ 阅读:(221) ⋅ 点赞:(0)

Qt文件读写的天花板QFile和QTextStream搭配第二集

在这里插入图片描述
想看更多精彩内容内容,锁定:
在这里插入图片描述


Qt设计师专栏


文件读写共计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;
}

打开一个文件,显示文件内容
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
记得锁定专栏,一直更新哦
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到