文件读写
思路
做文件读写的软件时,首先应该有文件对话框供我们打开可选的特定文件,然后才是去读取数据,对应的参数分别是(父指针,标题,路径,文件类型筛选字符串)文章来源地址https://www.toymoban.com/news/detail-523663.html
/* 打开文件的名字 */
QString filename= QFileDialog::getOpenFileName(this,
"Open File",
"C:/Users/31244/Desktop/Exercise/QT/NotePad",
tr("Text (*.txt *.md)")
);
/* 保存文件的名字 */
QString filename= QFileDialog::getSaveFileName(this,
"Save File",
"C:/Users/31244/Desktop/Exercise/QT/NotePad",
"Text(*.txt *.md)"
);
读文件
直接使用QFile类读文件
#include <QFile>
QString filename= QFileDialog::getOpenFileName(this,
"Open File",
"C:/Users/31244/Desktop/Exercise/QT/NotePad",
tr("Text (*.txt *.md)")
);
/* 判断路径是否为空 */
if(!filename.isEmpty()){
QFile file(path);
QTextCodec* codec = QTextCodec::codecForName("GBK");
if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){
//如果不能以只读或者文本方式打开就弹出警告对话框
QMessageBox::warning(this,
tr("Can't Open the File"),
tr("you can't open it")
);
}else{
while (!file.atEnd()) {
QByteArray line = file.readLine();
QString str = codec->toUnicode(line);
/*
或者这样写
QString str = file.readLine();
*/
ui->textEdit->append(str);
}
file.close();
}
}else{
//路径为空,弹出警告对话框
QMessageBox::warning(this,
tr("Path is empty"),
tr("you select an empty path")
);
}
使用QTextstream的 readLine()或者readAll()读文件,readAll()不适合大文件
if(!filename.isEmpty()){
//路径非空,读取文件
QFile file(filename,this);
QTextCodec* codec = QTextCodec::codecForName("GBK");
/* 判断文件能否打开 */
if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){
//如果不能以只读或者文本方式打开就弹出警告对话框
QMessageBox::warning(this,
tr("Can't Open the File"),
tr("you can't open it")
);
}else{
QTextStream in(&file);
while(!in.atEnd()){
QString str = in.readLine();
ui->textEdit->append(str);
}
myFile.close();
}
}
或者
if(!filename.isEmpty()){
//路径非空,读取文件
QFile file(filename);
QTextCodec* codec = QTextCodec::codecForName("GBK");
/* 判断文件能否打开 */
if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){
//如果不能以只读或者文本方式打开就弹出警告对话框
QMessageBox::warning(this,
tr("Can't Open the File"),
tr("you can't open it")
);
}else{
QTextStream in(&file);
QString str = in.readAll();
ui->textEdit->setText(str);
file.close();
}
}
写文件(保存)
使用QTextStream的operator功能,即 <<
进行写文件
QString filenname = QFileDialog::getSaveFileName(this,"Save");
QFile file(&filename);
if(!file.open(QIODevice::WriteOnly | QFile::Text))
{
QMessageBox::warning(this,"Warning","Cannot save file:"+file.errorString());
return;
}
setWindowTitle(fileName);
QTextStream out(&file);
QString text = ui->textEdit->toPlainText();
out << text;
file.close();
文章来源:https://www.toymoban.com/news/detail-523663.html
到了这里,关于Qt中的文件读写几种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!