文件操作及QTextStrem类

QTextStrem类

#include “textstream.h”
#include “ui_textstream.h”
#include
#include
#include
#include

textstream::textstream(QWidget *parent) :
QWidget(parent),
ui(new Ui::textstream)
{
ui->setupUi(this);
}

textstream::~textstream()
{
delete ui;
}

void textstream::on_pushButton_clicked()
{
QFile file("/home/yujl/yu.txt");
/* if(file.exists())
{
// QMessageBox::warning(this,“creat file”,“file is already!”);
}
else*/
if(!file.open(QIODevice::ReadWrite| QIODevice::Text))
{
QMessageBox msgbox;
msgbox.setText(“open file failed!please try again!”);
msgbox.exec();
}
else
{
QTextStream out(&file);
out<<“test”<<endl;
out<<“456”;
out.flush();
file.close();
}
}

void textstream::on_pushButton_2_clicked()
{
QFile file("/home/yujl/yu.txt");
if(!file.open(QIODevice::ReadWrite| QIODevice::Text))
{
QMessageBox msgbox;
msgbox.setText(“open file failed!please try again!”);
msgbox.exec();
}
else
{
QTextStream read(&file);
QString read_stream=read.readLine(3);//0 read a line ,other num read the first to that num
qDebug()<<read_stream;
}
}

/***************************************

  • QIODevice::ReadWrite 可读写
  • QIODevice::Text 换行符生效
  • QIODevice::Append 追加写入
  • QFile::Truncate 表示将原文件清空
    ****************************************/

文件操作

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.csdn.com/”);
//节点内容
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

作者:52_赫兹的鲸
来源:CSDN
原文:https://blog.csdn.net/qq_40194498/article/details/79726388
版权声明:本文为博主原创文章,转载请附上博文链接!

QFileInfo

QFileInfo可以提供文件的名称和位置信息,此外,还有文件的大小,文件的访问权限以及此文件是不是一个符号链接等信息。不仅如此,我们还可以通过这个类来查看文件的创建时间,修改时间和最近一次读取时间。

QFileInfo info(file);
QString infoList;
if (info.exists())
{
infoList += tr(“文件名称: %1 \n”).arg(info.fileName());
infoList += tr(“文件大小: %1 Bytes\n”).arg(info.size());
infoList += tr(“创建时间: %1 \n”).arg(info.created().toString(“yyyy-MM-dd hh:mm:ss”));
infoList += tr(“修改时间: %1 \n”).arg(info.lastModified().toString(“yyyy-MM-dd hh:mm:ss”));
infoList += tr(“读取时间: %1 \n”).arg(info.lastRead().toString(“yyyy-MM-dd hh:mm:ss”));
}
qDebug()<<infoList;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值