Qt中的文件读写几种方式

这篇具有很好参考价值的文章主要介绍了Qt中的文件读写几种方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文件读写

思路
做文件读写的软件时,首先应该有文件对话框供我们打开可选的特定文件,然后才是去读取数据,对应的参数分别是(父指针,标题,路径,文件类型筛选字符串)文章来源地址https://www.toymoban.com/news/detail-523663.html

/* 打开文件的名字 */
    QString filename= QFileDialog::getOpenFileName(this,
                                                "Open File",
                                                "C:/Users/31244/Desktop/Exercise/QT/NotePad",
                                                tr("Text (*.txt *.md)")
                                                );

/* 保存文件的名字 */
    QString filename= QFileDialog::getSaveFileName(this,
                                                "Save File",
                                                "C:/Users/31244/Desktop/Exercise/QT/NotePad",
                                                "Text(*.txt *.md)"
                                                );

读文件

直接使用QFile类读文件

#include <QFile>

QString filename= QFileDialog::getOpenFileName(this,
                                                "Open File",
                                                "C:/Users/31244/Desktop/Exercise/QT/NotePad",
                                                tr("Text (*.txt *.md)")
                                                );

    /* 判断路径是否为空 */
    if(!filename.isEmpty()){
        QFile file(path);   
        QTextCodec* codec = QTextCodec::codecForName("GBK");

        if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){
            //如果不能以只读或者文本方式打开就弹出警告对话框
            QMessageBox::warning(this,
                                 tr("Can't Open the File"),
                                 tr("you can't open it")
                                );
        }else{
           while (!file.atEnd()) {
               QByteArray line = file.readLine();
               QString str = codec->toUnicode(line);
						/*
						或者这样写
						QString str = file.readLine();
						*/
               ui->textEdit->append(str);
           }
           file.close();
        }
    }else{
        //路径为空,弹出警告对话框
        QMessageBox::warning(this,
                             tr("Path is empty"),
                             tr("you select an empty path")
                             );
    }

使用QTextstream的 readLine()或者readAll()读文件,readAll()不适合大文件

if(!filename.isEmpty()){
        //路径非空,读取文件
        QFile file(filename,this);    
        QTextCodec* codec = QTextCodec::codecForName("GBK");

        /* 判断文件能否打开 */

        if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){
            //如果不能以只读或者文本方式打开就弹出警告对话框
            QMessageBox::warning(this,
                                 tr("Can't Open the File"),
                                 tr("you can't open it")
                                );
        }else{
           QTextStream in(&file);
	          while(!in.atEnd()){
	            QString str = in.readLine();
	            ui->textEdit->append(str);
          }
           myFile.close();
        }

    }

或者

if(!filename.isEmpty()){
        //路径非空,读取文件
        QFile file(filename);    
        QTextCodec* codec = QTextCodec::codecForName("GBK");

        /* 判断文件能否打开 */
        if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){
            //如果不能以只读或者文本方式打开就弹出警告对话框
            QMessageBox::warning(this,
                                 tr("Can't Open the File"),
                                 tr("you can't open it")
                                );
        }else{
           QTextStream in(&file);
           QString str = in.readAll();
           ui->textEdit->setText(str);
           file.close();
        }
}

写文件(保存)

使用QTextStream的operator功能,即 << 进行写文件

QString filenname = QFileDialog::getSaveFileName(this,"Save");
QFile file(&filename);

if(!file.open(QIODevice::WriteOnly | QFile::Text))
{
	QMessageBox::warning(this,"Warning","Cannot save file:"+file.errorString());
	return;
}

setWindowTitle(fileName);
QTextStream out(&file);
QString text = ui->textEdit->toPlainText();
out << text;
file.close();

到了这里,关于Qt中的文件读写几种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【QT深入理解】QT中的几种常用的排序函数

    排序函数是一种在编程中常用的函数,它可以对一个序列(如数组,列表,向量等)中的元素进行排序,使其按照一定的顺序排列。排序函数可以根据不同的排序算法,如冒泡排序,选择排序,插入排序,快速排序,归并排序,堆排序等,实现不同的排序效果。排序函数的作

    2024年02月03日
    浏览(47)
  • Qt 多线程的几种实现方式

    Qt多线程的实现方式有: 1. 继承QThread类,重写run()方法 2. 使用moveToThread将一个继承QObject的子类移至线程,内部槽函数均在线程中执行 3. 使用QThreadPool,搭配QRunnable(线程池) 4. 使用QtConcurrent(线程池) 为什么要用线程池? 创建和销毁线程需要和OS交互,少量线程影响不大,

    2024年02月15日
    浏览(40)
  • qt读写文本文件

    使用QFile类进行读写,使用Open函数打开文件,打开方式有: QIODevice::NotOpen 0x0000 不打开 QIODevice::ReadOnly 0x0001 只读方式 QIODevice::WriteOnly 0x0002 只写方式,如果文件不存在则会自动创建文件 QIODevice::ReadWrite ReadOnly | WriteOnly 读写方式 QIODevice::Append 0x0004 此模式表明所有数据写入到文

    2024年02月10日
    浏览(47)
  • qt读写xml文件

    Qt使用XML模块,在.pro文件中添加 QT += xml Qt 提供了三种读 写  XML 文档的方法: QXmlStreamReader / QXmlStreamWriter: 一种快速的基于流的方式访问良格式 XML 文档 , 特别适合于实现一次解析器(所谓“一次解析器”,可以理解成我们只需读取文档一次,然后像一个遍历器从头到尾一

    2024年02月11日
    浏览(39)
  • Qt——文件的读写操作

    文件的读写是很多应用程序具有的功能,甚至某些应用程序就是围绕着某一种格式文件的处理而开发的,所以文件读写是应用程序开发的一个基本功能。 Qt 提供了两种读写纯文本文件的基本方法: 用 QFile 类 的 IODevice 读写功能直接进行读写 利用 QFile 和 QTextStream 结合起来,

    2024年02月13日
    浏览(45)
  • C++/Qt 读写文件

    之前写过两篇跟文件操作相关的博客,有兴趣也可以看一下: C语言读写文件 Qt关于文件路径的处理 先讲一些关于基础文本文件和二进制文件的读写操作,后续将会整理C++/Qt关于ini、xml、json、xlsx相关文件的读写操作。 相比于C语言使用FILE文件指针来实现文件操作,C++ 采用的

    2024年02月14日
    浏览(45)
  • QT读写配置文件

    Qt中常见的配置文件为(.ini)文件,其中ini是Initialization File的缩写,即初始化文件。 配置文件的格式如下所示: Qt中使用 QSettings 类来完成读写ini文件的操作。

    2024年02月13日
    浏览(34)
  • Qt读写文件

    项目文件结构 样例文件 再次读取 获取文件信息  

    2024年02月11日
    浏览(47)
  • 「Qt」文件读写操作

            我们知道 C 和 C++ 都提供了文件读写的类库,不过 Qt 也有一套自己的文件读写操作;本文主要介绍 Qt 中进行文件读写操作的类 —— QFile 。         一般的桌面应用程序,当我们想要打开一个文件时,通常会弹出一个文件对话框。在 Qt 中,文件对话框使用 QFileDial

    2024年02月12日
    浏览(40)
  • 【Qt学习】08:文件读写操作

    文件操作是应用程序必不可少的部分,Qt 作为一个通用开发库提供了跨平台的文件操作能力。Qt 通过QIODevice提供了对 I/O 设备的抽象,这些设备具有 读写字节块 的能力,以下是 I/O 设备的类图: QIODevice:所有 I/O 设备类的父类,提供了字节块读写的通用操作以及基本接口;

    2024年02月11日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包