txt纯文本读写,按行追加,按日期自增
#ifndef TEXTWRITER_H
#define TEXTWRITER_H
#include <QObject>
#include <QMutex>
#include <QFile>
#include <QTime>
#include <QDebug>
#include <QDir>
#include <QApplication>
#include <QTextStream>
class TextWriter : public QObject
{
Q_OBJECT
public:
explicit TextWriter(QString basedir="",QString tag="log",QString ext=".txt",QObject *parent = nullptr);
void write(QString msg);
QString getBaseDir();
void setBaseDir(QString);
signals:
public slots:
private:
QFile *_file;
QMutex _mutex;
QString _basedir;
QString _tag;
QString _ext;
};
#endif // TEXTWRITER_H
#include "textwriter.h"
TextWriter::TextWriter(QString basedir,QString tag,QString ext,QObject *parent) : QObject(parent)
{
_file = NULL;
_ext = ext;
_tag = tag;
setBaseDir(basedir);
}
QString TextWriter::getBaseDir(){
return _basedir;
}
void TextWriter::setBaseDir(QString basedir){
_basedir = basedir;
QDir dir = QDir();
if(dir.exists(_basedir) == false)
{
dir.mkdir(_basedir);
}
else {
_basedir = QCoreApplication::applicationDirPath();
}
}
void TextWriter::write(QString msg){
if(_mutex.tryLock() == true)
{
QString date = QDateTime::currentDateTime().toString("yyyy-MM-dd");//
QString fileName = QString::fromLocal8Bit("%1/%2_%3.%4")
.arg(_basedir).arg(date).arg(_tag).arg(_ext);
if(_file == nullptr || _file->fileName() != fileName){
_file = new QFile(fileName);//不存在或日期变更时创建文件
}
if(_file->open(QIODevice::WriteOnly | QIODevice::Append))
{
QString time = QTime::currentTime().toString("hh:mm:ss.zzz");
QString text = QString("%1 : %2").arg(time).arg(msg);
QTextStream text_stream(_file);
text_stream<<text<<"\r\n";
_file->flush();
_file->close();
}
_mutex.unlock();
}
}
sqlite数据库读写,可实现接口,固定读写内容,用表对象调用接口,调用时不必频繁生成sql命令.文件按日期自增;
分为三个部分:文件操作类dbfile,表接口类dbtableinterface,数据表对象管理类dbmanager
#ifndef DBFILE_H
#define DBFILE_H
#include <QMutex>
#include <QObject>
#include <QDebug>
#include <QDateTime>
#include <QSqlError>
#include <QSqlDatabase>
#include <QSqlQuery>
class DBFile : public QObject
{
Q_OBJECT
public:
explicit DBFile(QString tag,QString dir="",QString version="0.0.0.1",QObject *parent = 0);
signals:
void onloaddb(QString path);
void oninitnewdb(QString path);
public slots:
void Init();
void setDBDir(QString);
QString getDBDir();
QSqlQuery getQSqlQuery();
void ReadTableList(QStringList &tablist,int &count);
void writeDB2(QStringList);
void writeDB1(QSqlQuery sql_query);
void writeDB(QString sql_cmd);
QStringList getTableColumnNames(QString table);
int TableRowCount(QString table);
void ReadTable(QString table,
QStringList &tabcolname,
QList<QStringList> &tabrowdata,
int &count