一、简单的文件夹操作
//判断文件夹是否存在,不存在则创建
QString curPath =Config::getInstance()->RecordPath;
QDir dir(curPath);
if(!dir.exists())
{
dir.mkpath(curPath);
}
//打开文件目录
QString path= QFileDialog::getOpenFileName(this, tr("选择文件目录"),
Config::getInstance()->RecordPath, "*.csv");
if(!path.isEmpty())
{
//……
}
//选择一个存在的目录
QString FileName = QFileDialog::getExistingDirectory(this,tr("选择目录"),"");
if(!FileName.isEmpty())
{
//……
}
//读取文件夹下所有文件
QStringList Config::ReadSystemModel()
{
QStringList list;
QDir dir(QDir::currentPath()+"/Netlist/");
if (!dir.exists()) {
return list;
}
//取到文件名,但是去掉.和..的文件夹(这是QT默认有的)
dir.setFilter(QDir::Files|QDir::NoDotAndDotDot);
QStringList infolist = dir.entryList(QDir::Files | QDir::NoDotAndDotDot);
for (int i=0;i<infolist.count();i++)
{
QString name=infolist.at(i);
if(name.contains(".net"))
list.append(name.remove(".net"));
}
return list;
}
二、最简单的读写操作QFile
//读操作
QFile file(path); //参数就是读取文件的路径
file.open(QIODevice::ReadOnly);//只读模式
//第一种方式
//QByteArray array = file.readAll();//全部读出 ,返回值为 QByteArray
//第二种方式
QByteArray array;
while( !file.atEnd())//判断是否读到文件尾
{
array += file.readLine(); //按行读,追加
}
//将读取到的数据 放入textEdit中,显示出来
ui->textEdit->setText(array);//类型隐式转换
//ui->textEdit->setText( codec->toUnicode(array) );//格式转码
file.close();
//写操作
QFile file(path);
//进行写文件
file.open(QIODevice::Append); //用追加方式进行写
file.write("我是新写入的数据!!!");
file.close();
二、使用QFile和QTextStream配合
QFile file(name);
if (file.open(QIODevice::ReadOnly|QIODevice::Text))
{
QTextStream out(&file);
Config::getInstance()->TimeList.clear();
while (!out.atEnd())
{
//读取csv文件的一行
QString strline = out.readLine();
if (strline.isEmpty())
{
continue;
}
Config::getInstance()->TimeList.append(strline.toDouble());
}
file.close();
}
//读取数据类型文件
QString LibName=QDir::currentPath()+"/Netlist/"+s_sencerParam.Name+".net";
QDataStream Stream;
QFile FileSave;
FileSave.setFileName(LibName);
Stream.setDevice(&FileSave);
Stream.setVersion(QDataStream::Qt_5_13);
s_sencerParam.listData.clear();
if(FileSave.open(QIODevice::ReadOnly))
{
Stream>>....; //对应存入的数据类型
FileSave.close();
}
四、使用QSettings操作ini或注册表
//修改字段
void Config::ModifyParam(QString Primary, QString secondary, QVariant data)
{
QSettings *mSettings;
if(ProPath==""||ProName=="")
mSettings=new QSettings(QDir::currentPath()+"/system/Settings.ini",
QSettings::IniFormat);
else
mSettings=new QSettings(ProPath+"/"+ProName,QSettings::IniFormat);
mSettings->setIniCodec(QTextCodec::codecForName("UTF-8"));
mSettings->setValue(QString("%1/%2").arg(Primary).arg(secondary),data);
delete mSettings;
}
//读取字段
QVariant Config::ReadParam(QString Primary, QString secondary)
{
QSettings *mSettings;
if(ProPath==""||ProName=="")
mSettings=new QSettings(QDir::currentPath()+"/system/Settings.ini",
QSettings::IniFormat);
else
mSettings=new QSettings(ProPath+"/"+ProName,QSettings::IniFormat);
mSettings->setIniCodec(QTextCodec::codecForName("UTF-8"));
QVariant data;
data=mSettings->value(QString("%1/%2").arg(Primary).arg(secondary));
delete mSettings;
return data;
}