一. 文件的读取和写入:QByteArray
点击读取和写入按钮,弹出对话框,进行读取和写入操作。单行文本框打印文件路径,多行文本框读取文件时显示文件内容。
connect(ui->pushButton, &QPushButton::clicked, [=](){
QString path = QFileDialog::getOpenFileName(this,
"读取文件", "C:\\Users\\lenovo\\Desktop");
//选择文件后的显示功能
ui->lineEdit->setText(path);
QFile file(path); //创建文件对象
file.open(QIODevice::ReadOnly); //以只读的方式打开文件
QByteArray byteArray; //字节数组,即char *
while (!file.atEnd()) {
byteArray += file.readLine();
}
//byteArray = file.readAll(); //读取全部文件内容
ui->textEdit->setText(byteArray); //设置到Edit中
});
connect(ui->pushButton_2, &QPushButton::clicked, [=](){
QString path = QFileDialog::getOpenFileName(this,
"写入文件", "C:\\Users\\lenovo\\Desktop");
//选择文件后的显示功能(同上)
ui->lineEdit->setText(path);
//追加功能
QFile *file = new QFile(path);
file->open(QIODevice::Append); //在文件末尾追加
file->write("\r\n 同学们好"); //只接受char *类型,所以不能用QString
file->close(); //关闭文件时才会写入文件
});
二. 文本流:QTextStream
所有东西都以文本的形式写入。如果想写入数值,可以定义一个int变量,然后使用重载左移进行写入。如果想要原样写入,那么就要使用二进制文件流。
connect(ui->pushButton, &QPushButton::clicked, [=](){
QString path = QFileDialog::getOpenFileName(this,
"读取文件", "C:\\Users\\lenovo\\Desktop");
//选择文件后的显示功能
ui->lineEdit->setText(path);
QFile file(path); //创建文件对象
file.open(QIODevice::ReadOnly);
QTextStream textString(&file); //创建文本文件流
ui->textEdit->setText(textString.readAll());
});
connect(ui->pushButton_2, &QPushButton::clicked, [=](){
QString path = QFileDialog::getOpenFileName(this,
"写入文件", "C:\\Users\\lenovo\\Desktop");
ui->lineEdit->setText(path);
QFile *file = new QFile(path);
file->open(QIODevice::Append);
QTextStream textStream(file);
QString str1 = "\r\n同学们好";
textStream.setCodec("utf-8"); //设置写入编码格式
textStream << str1;
file->close();
});
三. 二进制文件流:QDataString
数据写入后可以原样读取,它是以二进制的方式写入文本的。需要注意读出的顺序要与写入顺序一致。
connect(ui->pushButton, &QPushButton::clicked, [=](){
QString path = QFileDialog::getOpenFileName(this,
"读取文件", "C:\\Users\\lenovo\\Desktop");
//选择文件后的显示功能
ui->lineEdit->setText(path);
QFile file(path); //创建文件对象
file.open(QIODevice::ReadOnly);
QString str1, str2;
int a;
QDataStream dataStream(&file);
dataStream >> str1;
dataStream >> str2;
dataStream >> a;
qDebug() << str1;
qDebug() << str2;
qDebug() << a;
});
connect(ui->pushButton_2, &QPushButton::clicked, [=](){
QString path = QFileDialog::getOpenFileName(this,
"写入文件", "C:\\Users\\lenovo\\Desktop");
ui->lineEdit->setText(path);
QFile *file = new QFile(path);
file->open(QIODevice::Append);
QDataStream dataStream(file);
QString str1, str2;
str1 = "同学们好";
str2 = "老师好";
int a = 12345;
dataStream << str1;
dataStream << str2;
dataStream << a;
file->close();
});
四. 文件信息:QFileInfo
//创建文件信息对象
QFileInfo fileInfo(path);
qDebug() << "文件名称" << fileInfo.fileName();
qDebug() << "文件大小" << fileInfo.size();
qDebug() << "文件类型" << fileInfo.suffix();
qDebug() << "创建时间" << fileInfo.created();
qDebug() << "是否可写" << fileInfo.isWritable();