本文以 ".txt"文件做为案例解析
首先说文件的几种打开方式,跟多文章里都有,我这边直接复制过来,具体可以查看 参考文档的第一个
文件的 写 操作:
QString file_name = "./debug/111.txt"; //文件路径,根据自己需求
// 我之前的同事喜欢用这个函数,大家可以借鉴,如下:
// QCoreApplication::applicationDirPath()
// 整体:QString file_name = QCoreApplication::applicationDirPath()+"/文件夹名/文件名.txt";
QFile file(file_name);
if(file.open(QIODevice::WriteOnly)) //只写模式打开
{
//两种输入方式
//第一种,文件流形式
QTextStream St_file(&file);
St_file.setCodec(QTextCodec::codecForName("utf-8")); //按“utf-8”模式存放,如果数据中有中文最好写这段代码,不然读的时候可能会出现乱码
St_file << 数据 <<endl;
file.close(); //写完后一定要关闭文件
//第二种,文件输入
QString data = 写入的数据;
file.write(data.toUtf8()); //效果和文件流的按"utf-8"格式输入一样
file.close(); //写完后一定要关闭文件
//可以写完后找到文件打开查看右下角是不是 utf-8 格式
}
下面说读文件的方式,具体操作和写入并无二致,主要是函数的不同。
第一种,选择文件打开。
QFileDialog::getOpenFileName();
QString QFileDialog::getOpenFileName|getSaveFileName(
QWidget * parent = 0, //父类
const QString & caption = QString(), //标题
const QString & dir = QString(), //默认打开的目录
const QString & filter = QString()) [static] //文件格式过滤器
QString file_name = QFileDialog::getOpenFileName(null,tr("案例"),"",tr("Txt 文件 (*.txt)"));
QFile file(file_name);
if(file.open(QIODevice::ReadOnly)) //只读模式打开
{
QTextStream S_file(&file);
S_file.setCodec("UTF-8"); //防止读取数据是中文时出现乱码
QString data;
while(!S_file.atEnd())
{
data = S_file.readLine().trimmed(); //一行一行的读,trimmed是为去除一些字符,"\n"、" "、 "\t"等等
}
file.close();记得关闭文件
//第二种正常读取
//直接用file读即可
while(!file.atEnd())
{
file.readLine().trimmed();
}
file.close();
}
参考文档: