前言
csv文件之所以被用户推荐使用,我觉得即可以用excel打开,同时也是可以用文本编辑器打开,而且文本内容的显示也是比较有规律,用户查看起来也是能清晰看的明白,所以这里其实就是已经讲得出来了,csv的操作,其实就是你平时使用txt文件操作,只是我们按照csv的格式(xxx,xxx 列与列直接用英文逗号分开)进行文本保存,同时将文本的后缀名修改成csv罢了,接下来我们就进行读写的操作具体的了解。
一、CSV文件初始化
那如果我们本地盘符就是不存在csv文件,通常我们都是会先创建一个csv文件,看下下面的程序吧,这样直接点。
QString strDir = QString("%1/%2").arg("C://").arg("CSV");
QDir dirCSV;
if (!dirCSV.exists(strDir))
dirCSV.mkpath(strDir);
m_strFilePath = strDir + "/" + QString("csv%1.csv").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd"));
static QMutex mutex;
mutex.lock();
QFile fileCSV;
if (!fileCSV.exists(m_strFilePath))
{
QFile file(m_strFilePath);
if (file.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text))
{
QTextStream in(&file);
QString strText("");
strText = QString("DateTime,") + QString("Info");
in << strText << '\n';
file.close();
}
}
mutex.unlock();
二、CSV写入
写入的方式其实就是按照我们之前定义的格式写入就行了,主要文件打开的方式就行了,读取的也是一样吗,这里不做赘述。
static QMutex mutex;
mutex.lock();
QFile file(m_strFilePath);
if (file.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text))
{
QString strCurTime = QDateTime::currentDateTime().toString("yyyy/MM/dd hh:mm:ss");
QTextStream in(&file);
QString strMessage = QString(u8"%1,%2").arg(strCurTime).arg(strText);
in << strMessage << '\n';
file.close();
}
mutex.unlock();
三、CSV读取
static QMutex mutex;
mutex.lock();
QFile file(m_strFilePath);
if (file.open(QIODevice::ReadOnly))
{
QTextStream out(&file);
QStringList tempOption = out.readAll().split("\n");
for (int i = 0; i < tempOption.count(); i++)
{
float fArea = 0;
QStringList tempbar = tempOption.at(i).split(",");
tempbar.removeLast();
if (tempbar.size() > 0)
{
if (tempbar.at(0).indexOf(QString("DateTime")) != -1)
continue;
m_StrAlarmInfoList << tempOption[i];
}
}
}
file.close();
mutex.unlock();
四、程序链接
测试用例
|