Qt中的文件管理QFile类
1、QFile的构造函数
QFile()
QFile(const QString &name)//传入指定文件名的字符串
QFile(QObject *parent) //通过一个文件类创建
QFile(const QString &name, QObject *parent)//传入指定文件名的字符串与文件类
2、使用QFile进行数据读取
QFileDialog::getOpenFileName:用于弹出系统的文件夹目录进行选取
tr("Open File"):设置文件打开的title
tr("Text (*.txt)"):设置读取文件的类型
file.open(QIODevice::ReadWrite | QIODevice::Text):需要设置文件打开并设置读写权限
QTextStream:使用一个缓冲流读取,提高读取效率
in.atEnd():判断是否是最后一行
file.close():读取完关闭文件流
void Widget::on_btnOpen_clicked()
{
QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
"E:/codeData/EmbeddedSoftwareCode/QT-code",
tr("Text (*.txt)"));
qDebug() << fileName;
//读取之前先清空之前的内容
ui->textEdit->clear();
file.setFileName(fileName);
//设置读取权限
if (!file.open(QIODevice::ReadWrite | QIODevice::Text))
{
qDebug() << "File open ERROR";
return;
}
this->setWindowTitle(fileName+"-MyNote");
QTextStream in(&file);
//in.setCodec("UTF-8");
in.setCodec(ui->comboBox->currentText().toStdString().c_str());
while (!in.atEnd()) {//in.atEnd()判断是否是最后一行
QString context = in.readLine();//按行读取
ui->textEdit->append(context);//显示到上面
}
//文件操作完需要关闭
file.close();
}
3.使用QFile进行保存数据
QFileDialog::getSaveFileName:用于弹出系统的文件夹目录进行保存
tr("SaveFile"):设置文件打开的title
tr("Text (*.txt)"):设置保存文件的类型
file.open(QIODevice::WriteOnly | QIODevice::Text):需要设置写入权限
file.seek(0):重置定义光标的位置
QTextStream out(&file):使用缓冲流写入
out << context:往文件写入内容
void Widget::on_btnSave_clicked()
{
qDebug() << "exits:"<<file.exists();
if(!file.isOpen())
{
QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
"E:/codeData/EmbeddedSoftwareCode/QT-code/untitled.txt",
tr("Text (*.txt)"));
qDebug()<< fileName;
file.setFileName(fileName);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
{
qDebug() << "File open ERROR";
return;
}
this->setWindowTitle(fileName+"-MyNote");
}
QTextStream out(&file);
out.setCodec(ui->comboBox->currentText().toStdString().c_str());
//out.setCodec("UTF-8");
QString context = ui->textEdit->toPlainText();//读取到
file.seek(0);
out << context;
//文件操作完需要关闭
file.close();
}