我想用自动时间戳将大量串行数据保存到Qt中的一个文本文件中。
这是我尝试过的:
void Measure::saveFile(QString buffer)
{
QString log_file = SAVE_DATA_LOG+QDateTime::currentDateTime().toString("dd.MM.yyyy_hh:mm:ss")+".txt";
QFile file(log_file);
file.open(QIODevice::WriteOnly | QIODevice::Append);
stream << buffer;
file.flush();
file.close();
}
问题是,每秒创建一个新文件。如何将数据保存到带有时间戳的文本文件中?
答案 0 :(得分:0)
您应该删除QIODevice::Truncate
标志,这将清空文件
最重要的是,您不应使用当前时间戳创建文件名。您可以使用以下代码将时间戳记写入文件:
QString log_file = SAVE_DATA_LOG + ".txt";
QFile file(log_file);
file.open(QIODevice::WriteOnly | QIODevice::Append);
QTextStream out(&file);
out << QDateTime::currentDateTime().toString("dd.MM.yyyy_hh:mm:ss") << data;
编辑:
我想我开始理解您的意思:您想创建一个文本文件,该文件以启动程序的日期时间命名,然后附加到该文件。所以这是我的第二次尝试:
class Measure {
public:
Measure():
log_file(SAVE_DATA_LOG+QDateTime::currentDateTime().toString("dd.MM.yyyy_hh:mm:ss")+".txt"),
{
}
~Measure()
{
}
void saveFile(QString buffer)
{
QFile file(log_file);
file.open(QIODevice::WriteOnly | QIODevice::Append);
QTextStream stream(&file);
stream << buffer;
file.flush(); //optional
file.close();
}
private:
QString log_file;
QTextStream stream;
};
这使用构造函数创建文件名,您还可以创建一个函数来重置文件名等。