文件操作
QFileDialog::getOpenFileName() //获取指定文件路径名返回QString
QFileDialog::getExistingDirectory() //获取指定路径返回QString
QFileDialog::getSaveFileName() //获取指定保存路径名返回QString
1、使用信号槽读取文本文件中的一行并显示出来
connect(ui->pushButton,&QPushButton::clicked,[=](){
QString path=QFileDialog::getOpenFileName(this,"打开文件","E:/");
ui->lineEdit->setText(path);
QFile file(path);
file.open(QIODevice::ReadOnly);
//QByteArray array=file.readAll();
QByteArray array;
while(!file.atEnd())
{
array+=file.readLine();
}
array.toStdString();
ui->textEdit->setText(array);
file.close();
});
2、使用QTextStream读取文本文件
connect(ui->pushButton,&QPushButton::clicked,[=](){
QString path=QFileDialog::getOpenFileName(this,"打开文件","E:/");
ui->lineEdit->setText(path);
QFile file(path);
file.open(QIODevice::ReadOnly);
QTextStream QS(&file);
QString array=QS.readAll();
ui->textEdit->setText(array);
file.close();
});
3、文件写操作
/*文件写操作 使用QFile*/
QString path=QFileDialog::getSaveFileName(this,"保存"
,"E:\\","TXT(*.txt)");
QFile file(path);
file.open(QIODevice::WriteOnly | QIODevice::Text);
file.write("你好");
file.close();
/*文件写操作 使用QTexrStream*/
QString path=QFileDialog::getSaveFileName(this,"保存"
,"E:\\","TXT(*.txt)");
QFile file(path);
file.open(QIODevice::WriteOnly | QIODevice::Text);
QTextStream out(&file);
QString str="你好";
out<<str;
file.close();
4、文件信息读取
QString path=QFileDialog::getSaveFileName(this,"打开文件","E:\\");
QFileInfo file(path);
qDebug()<<"文件名"<<file.fileName();
qDebug()<<"后缀名"<<file.suffix();
qDebug()<<"文件大小"<<file.size();
qDebug()<<"创建日期"<<file.birthTime().toString("yyyy/MM/dd hh:mm:ss");
qDebug()<<"最后修改"<<file.lastModified().toString("yyyy/MM/dd hh:mm:ss");
各编码转换
QString -> QByteArray QString.toUtf8();
QByteArray -> std::string QByteArray.toStdString();
std::string -> char * string.date();
ini文件操作
1、ini文件介绍
.ini 文件是Initialization File的缩写,即初始化文件。
除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能。它可以用来存放软件信息,注册表信息等。
2、文件格式
INI文件由节、键、值组成。
节
[section]
参数(键=值)
name=value
下面是一个ini文件的例子
[Section1 Name]
KeyName1=value1
KeyName2=value2
…
[Section2 Name]
KeyName21=value21
KeyName22=value22
其中:[Section1 Name]用来表示一个段落。因为INI文件可能是项目中共用的,所以使用[Section Name]段名来区分不同用途的参数区。例如:[Section1 Name]表示传感器灵敏度参数区;[Section2 Name]表示测量通道参数区等等。
注解:使用分号表示(;)。在分号后面的文字,直到该行结尾都全部为注解。
3、Qt写ini文件
#include <QApplication>
#include <QSettings>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//Qt中使用QSettings类读写ini文件
//QSettings构造函数的第一个参数是ini文件的路径,第二个参数表示针对ini文件,第三个参数可以缺省
QSettings *configIniWrite = new QSettings("hahaya.ini", QSettings::IniFormat);
//向ini文件中写入内容,setValue函数的两个参数是键值对
//向ini文件的第一个节写入内容,ip节下的第一个参数
configIniWrite->setValue("/ip/first", "192.168.0.1");
//向ini文件的第一个节写入内容,ip节下的第二个参数
configIniWrite->setValue("ip/second", "127.0.0.1");
//向ini文件的第二个节写入内容,port节下的第一个参数
configIniWrite->setValue("port/open", "2222");
//写入完成后删除指针
delete configIniWrite;
return a.exec();
}
4、Qt读ini文件
QApplication a(argc, argv);
QSettings *configIniRead=new QSettings("haya.ini",QSettings::IniFormat);
//将读取到的ini文件保存在QString中,先取值,然后通过toString()函数转换成QString类型
QString ipResult=configIniRead->value("/ip/second").toString();
QString portResult=configIniRead->value("/port/open").toString();
//打印得到的结果
qDebug()<<ipResult;
qDebug()<<portResult;
//写入完成后删除指针
delete configIniRead;
return a.exec();