分享

Qt文件操作详解(创建、写入、删除、INI、XML文件等)

 slimfeng 2019-04-12

1、创建文件夹
头文件:

#include <QDir>
#include <QMessageBox>

核心代码如下:

    //实例QDir
    QDir *folder = new QDir;
    //判断创建文件夹是否存在
    bool exist = folder->exists("D:/NewFolder");
    if(exist)
    {
        QMessageBox::warning(this,tr("创建文件夹"),tr("文件夹已经存在!"));
    } 
    else //如果不存在,创建文件夹
    {
        //创建文件夹
        bool ok = folder->mkdir("D:/NewFolder");
        //判断是否成功
           if(ok)
           {
               QMessageBox::warning(this,tr("创建文件夹"),tr("文件夹创建成功!"));
           } 
           else
           {
               QMessageBox::warning(this,tr("创建文件夹"),tr("文件夹创建失败!"));
           }
       }

2、写入文件:
头文件:

#include <QMessageBox>
#include <QFile>

核心代码如下:

    //实例QFile
    QFile file("D:/Qt.txt");  
    //定义文件内容字符串
    QString content= "写入文件的内容";
    //判断文件是否存在
    if(file.exists())
    {
        QMessageBox::warning(this,"创建文件","文件已经存在!");
    }else
    {
        //存在打开,不存在创建
        file.open(QIODevice::ReadWrite | QIODevice::Text);
        //写入内容,这里需要转码,否则报错。
        QByteArray str = content.toUtf8();
        //写入QByteArray格式字符串
        file.write(str);
        //提示成功
        QMessageBox::warning(this,"创建文件","文件创建成功!");
    }
    //关闭文件
    file.close();

3、修改文件内容:
头文件:

#include <QFileDialog>
#include <QMessageBox>
#include <QTextStream>
#include <QTextCodec> 
#include <QFile>

核心代码如下:

    //浏览文件
    //定义变量str接收QFileDialog对话框获取的文件路径 
    QString str = QFileDialog::getOpenFileName(this,"open file","/","text file(*.txt);;C file(*.cpp);;All file(*.*)"); 
    //文件路径转换为utf8格式
       QString str_utf8 =str.toUtf8();
       //判断是否选择文件
       if(str_utf8.isEmpty())
       {
           return;
       }  
       //设置文件路径
       QFile file(str_utf8);
       //判断文件是否打开成功
       if(!file.open(QIODevice::ReadOnly|QIODevice::Text))
       {
           QMessageBox::warning(this,"打开文件","打开文件失败!");
           return;
       } 
       //文件流
       QTextStream ts(&file); 
       //获取文件中的数据
       QString str_get;
       //循环文档数据至结尾
       while(!ts.atEnd())
       {
           //将全部数据绑定str_get
            str_get = ts.readAll();
       }
       //关闭文档
       file.close();

    //保存文件,此段函数置于另一个槽函数
        QFile file(str_utf8);
        file.open(QIODevice::ReadWrite | QIODevice::Text);
        //写入内容,这里需要转码,否则报错。
        QByteArray strb = str_get.toUtf8();
        //写入QByteArray格式字符串
        file.write(strb);
        //提示成功
        QMessageBox::warning(this,"修改文件","文件修改成功!");
        file.close();

4、删除文件:
头文件:

#include <QMessageBox>
#include <QFile>
#include <QFileDialog>

核心代码如下:

    QString str = QFileDialog::getOpenFileName(this,"选择文件","/","text 
file(*.txt);;C file(*.cpp);;All file(*.*)");
    //转换文件路径
    QString get = str.toUtf8();
    //删除文件
    QFile::remove(get);  
    //提示
    QMessageBox::warning(this,"删除文件","删除成功!");

5、修改文件名
头文件:

#include <QFileDialog>
#include <QMessageBox>

核心代码如下:

    //新文件名 
    QString new = "Qt文件操作详解";
  //定义变量str接收QFileDialog对话框获取的文件路径
    QString str = QFileDialog::getOpenFileName(this,"open file","/","text 
file(*.txt);;C file(*.cpp);;All file(*.*)");
    //转换文件路径
    QString get = str.toUtf8(); 

    //实例QFileInfo函数
    QFileInfo file(get);
    //获取文件路径
    QString path = file.absolutePath();
    //bool型变量接收是否修改成功成功true,不成功false。
    bool x = QFile::rename(get,path + "/" + new);
    if(x)
    {
        QMessageBox::warning(this,"修改文件名","文件修改成功!");
    }else
    {
        QMessageBox::warning(this,"修改文件名","文件修改失败!");

6、INI文件写入操作:
对于INI文件,搜狗百科的解释:

.ini文件是InitializationFile的缩写,即初始化文件,是windows的系统配置文件所采用的存储格式,统管windows的各项配置,一般用户就用windows提供的各项图形化管理界面就可实现相同的配置了。除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能。它可以用来存放软件信息,注册表信息等。

简言之,INI文件普遍作为配置文件使用。
头文件:

#include <QSettings>

核心代码如下:

QSettings *writeIni;
//QSettings 构造函数的第一个参数是 ini 文件的路径,第二个参数表示针对 ini 文件
writeIni = new QSettings("D:/CSDN.ini", QSettings::IniFormat);
//写入键、值
writeIni->setValue("node"+"/"+"ip","192.168.1.1");
//写入完成删除指针
delete writeIni;

7、INI文件读取操作
头文件:

#include <QSettings>

核心代码如下:

QSettings *readIni; 
QTextEdit *valEdit = new QTextEdit(this);
//QSettings 构造函数的第一个参数是 ini 文件的路径,第二个参数表示针对 ini 文件
readIni = new QSettings("D:/CSDN.ini", QSettings::IniFormat);
/*将读取到的 ini 文件保存在 QString 中,先取值,然后通过 toString()函数转换成QString类型*/ 
QString key = "键值";
QString ipResult = readIni->value("node"+"/"+key).toString();
//将结果绑定 IP 值控件上
valEdit->setText(ipResult);
//写入完成删除指针
delete readIni;

8 创建 XML 文件
头文件:

#include <QFile>
#include <QXmlStreamWriter>

核心代码如下:

//文件路径
QString xmlPath = "D:/Qter.xml";
QFile file(xmlPath);
if(file.open(QIODevice::WriteOnly | QIODevice::Text))
{
//实例 QXmlStreamWriter
QXmlStreamWriter stream(&file);
stream.setAutoFormatting(true);
//文档头
stream.writeStartDocument();
//根节点
stream.writeStartElement("Root");
//元素、值
stream.writeAttribute("href", "http://www./");
//节点内容
stream.writeTextElement("title", "Qt Home");
stream.writeEndElement();
stream.writeEndDocument();
//关闭文件
file.close();

9、 读取 XML 文件
头文件:

#include <QFile>
#include <QXmlStreamWriter>

核心代码如下:

QLabel *resultL = new QLabel(this);
QString xmlPath = "D:/Qter.xml";
QFile file(xmlPath);
//定义变量接收信息
QString str;
//判断文件是否存在
if(file.exists())
{
if(file.open(QIODevice::ReadOnly | QIODevice::Text))
{
//实例 QXmlStreamReader 对象读取文件
QXmlStreamReader xmlRead(&file);
//循环节点
while (!xmlRead.atEnd())
{
//指针下移
xmlRead.readNext();
if(xmlRead.isStartElement())
{
//如果节点有等于 title 的
if(xmlRead.name() == "title")
{
//取 title 值赋予变量 str
str = xmlRead.readElementText();
}else
{
str = "没找到节点";
}
}
}
//将值绑定 QLabel 控件显示
resultL->setText(str);
}else
{
resultL->setText("文件打开失败");
}
//关闭文件
file.close();
}else
{
resultL->setText("文件不存在");
}

Qt使用XML文件的详细源码:
链接:https://pan.baidu.com/s/1fY2ei0NWR6nUrGFE3P_03A 密码:n6d6

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多