[QT/C++]一些简单的QT文件读写类

txt纯文本读写,按行追加,按日期自增#ifndef TEXTWRITER_H#define TEXTWRITER_H#include <QObject>#include <QMutex>#include <QFile>#include <QTime>#include <QDebug>#include <QDi...
摘要由CSDN通过智能技术生成

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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值