栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

快速搜索使用手册

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

快速搜索使用手册


文章目录
  • 0前言说明
    • 0.1 软件说明
    • 0.2 特别说明
    • 0.3 功能特点
  • 1程序说明
    • 1.1文件
      • 1.1.1:新建窗口
      • 1.1.2:导出
      • 1.1.3:关闭窗口
      • 1.1.4:退出程序
    • 1.2日志
      • 1.2.1:usnjournal
      • 1.2.2:Run日志
    • 1.3 视图
      • 1.31:排序
    • 1.4 搜索
      • 1.4.1 区分大小写
      • 1.4.2 前置匹配
      • 1.4.3 正则表达式
      • 1.4.4 扩展名
      • 1.4.5 高级搜索
    • 1.5 设置
      • 1.5.1 开机自启动
      • 1.5.2 显示托盘图标
      • 1.5.3 实时搜索
      • 1.5.4 隐藏搜索按钮
      • 1.5.5 正常文件启用(恢复/复制数据)
      • 1.5.6 数据保存到数据库
      • 1.5.7 窗口置顶
      • 1.5.8 UsnJournal不监控(不更新数据)
      • 1.5.9 隐藏某列
  • 2 打包发布
  • 3 体验地址
  • 4 实现链接
  • 总结


0前言说明 0.1 软件说明

1:本软件只适用于Windows系统,主要偏重整体框架和UI交互等。
2:主要功能包括文件名快速搜索,删除的文件恢复,usnjournal监控,多窗口同时显示等功能。

0.2 特别说明

1:程序只获取NTFS系统下(包括GPT下的隐藏盘(隐藏盘只获取GPT分区下的)和U盘符)的文件名数据(非NFTS系统暂不处理)。
2:程序采集NTFS系统是动态运行,ntfs系统U盘的插入和拔出,程序自动获取数据和移除数据,格式化自动更新数据,更改盘符自动更新盘符名。
3:程序中对盘符的信息采用定时获取和比对,目的是节流。
4:程序打开盘符或打开物理硬盘只采用只读的形式打开,不做更改。
5:程序从NTFS系统中只获取一些文件的基本信息。
6:程序中对文件名排序的算法使用三路快排,其他用到的是快排。
7:程序中的文件图标从Windows注册表中解析后,存储到hash表中,实现快速获取。
8:程序中的文件数据从NTFS系统下的MFT表解析后,存储到hash表中(保存到内存中)实现快速搜索。
9:程序获取usnjournal然后写入到本地文件,本地文件发生改变,usnjournal还会获取,,,这样会造成一个死循环浪费cpu性能、占用不必要的内存。解决方法:程序内部获取要写入的日志文件夹(MFT号),从而过滤掉文件夹下的所有文件的变化。
9:系统采用纯QtWidget(非qml)编写,同时集成了数据库、多线程、配置文件、UI布局等众多知识点。

0.3 功能特点

1:文件:新建窗口,导出,关闭窗口,退出程序。
2:日志:USN日志,运行日志。
3:视图:排序。
4:搜索:区分大小写,前置匹配,高级搜索,使用正则表达式,扩展名。
5:选项:设置,关于。
6:设置:开机自启动,显示托盘图标,实时搜索,隐藏搜索按钮,正常文件启用(恢复/复制数据),数据保存到数据库,窗口置顶,usnjournal不监控(不更新数据),隐藏某列。

1程序说明 1.1文件

//创建界面
void MainWindow::createUi()
{
    SlotNewWindow(initWindowRect());
}
//初始化窗口大小和位置
QRect MainWindow::initWindowRect()
{
    QDesktopWidget *screenResolution = QApplication::desktop();
    int h = 600;//默认窗口的高度
    int w = 800;//默认窗口的宽度
    return QRect((screenResolution->width()-w)/2,(screenResolution->height()- h)/2,w, h);
}
//新建窗口
void MainWindow::SlotNewWindow(QRect rect)
{
    WindowClass *window = new WindowClass(rect);
    window->show();
    connect(m_dataManage,&DataManage::SignalDataChange,window->getModel(),&MyTableModel::SlotDataChange,Qt::QueuedConnection);//数据管理发送到model
    MemoryPool::getInstance()->getWindows()->append(window);
}
//重写事件
bool MainWindow::notify(QObject *receiver, QEvent *e)
{
    //感兴趣事件返回true;不感兴趣返回false
    //自定义全局事件;新建窗口
    if(e->type() == NEW_WINDOW){
        createUi();
        return true;
    }
    //自定义全局事件;关闭窗口
    if(e->type() == CLOSE_WINDOW){
        closeWindow(receiver);
        return true;
    }
    //自定义全局事件;结束程序
    if(e->type() == EXIT_PROGRAM){
        SlotExitProgram();
        return true;
    }
    //自定义全局事件;创建控制台
    if(e->type() == CREATE_CONSOLE){
        if(!gRedirection){//防止多次运行
            CreateConsole();
            gRedirection = true;
            qDebug()<type() == CLOSE_CONSOLE){
        if(gRedirection){//防止多次运行
            gRedirection = false;
            CloseConsole();
            qDebug()<type() == SHOW_WINDOWS){
        showWindows();
        return true;
    }
    //自定义全局事件;显示关于
    if(e->type() == ABOUT){
        about();
        return true;
    }

    return QApplication::notify(receiver,e);
}

1.1.1:新建窗口

实现:

//新建窗口

void WindowClass::SlotNewWindow()
{
        QEvent event(NEW_WINDOW);
    	QApplication::sendEvent(qApp,&event);
}
1.1.2:导出

对当前显示的数据导出。保存形式有(.txt 、.csv 、.xlsx),xlsx用到的是外部库链接

1.1.3:关闭窗口

对当前窗口关闭(如果设置中【显示托盘图标启用】,对当前窗口会隐藏。),如果是最后一个窗口,直接突出程序。

1.1.4:退出程序

直接关闭程序。

1.2日志

1.2.1:usnjournal

实现详解
1:usn日志实现监控:监控当前Windows系统下的所有ntfs系统的数据的变更,每条usnjournal会追加到到界面显示。后台会对采集的数据保存到数据库中。实现用防抖。

void RealLogModel::init()
{
    //定时器的创建和调用必须在同一个线程
    timer = new QTimer();
    //设置时间后,只触发一次,单次触发
    if(!timer->isSingleShot()) {
    	timer->setSingleShot(true);
    }   
    connect(timer,&QTimer::timeout,this,[&]()mutable {
    	//写入数据到数据库
        writeDatas();
        beData();
    });

}
//接收数据
void RealLogModel::SlotAddData(S_USN_LOG item)
{
    m_tempDatas.append(item);
    //同时接收大量数据超过设定值,更新界面
    if(m_tempDatas.count() >= ENDCOUNT){
    	//写入数据到数据库
        writeDatas();
        beData();
        return;
    }
    timer->setInterval(100);
    timer->start();

}

2:usn日志监控列表:添加监控项对实时监控的日志记录比对,符合监控项并且启用Windows运行指令,就会执行当前指令(Windows运行指令不做验证,填写当前指令请自己复检可以正常执行,如果指令是错误的就什么也不执行)。添加的监控项会保存到当前程序目录下MonitorCfg.xml文件中,下次启动程序会重新加载到列表中,执行顺序采用当前列表中从上往下判断执行。
Windows运行的最低时长:每次执行监控项会先休眠当前时长,根据情况而设定(如果添加的监控项,全部留空(默认),然后填上Windows运行命令,时长为0的话,usnjournal只要有记录产生,就会每一个都会执行,造成Windows系统卡、甚至崩溃)

1.2.2:Run日志

1:运行日志窗口采用Windows控制台窗口:输出当前打印的日志(打开和关闭都用下图中的按钮形式。采用重定向形式,打开后重定向控制台,日志打印到控制台,同时对日志分类保存到日志文件中。点击关闭按钮后重定向程序目录下 “___redirectionFile.txt” 文件下实现控制台的关闭。)

1.3 视图 1.31:排序

1.4 搜索

1.4.1 区分大小写

对搜索的文件名进行大小写区分,默认不区分。

1.4.2 前置匹配

对搜索的文件名前置完全匹配搜索,默认是包含内容搜索。

1.4.3 正则表达式

使用正则语法进行搜索,如果正则语法无效,则提示。正则语法1 正则语法2

1.4.4 扩展名

使用文件后缀进行搜索,后缀包含文件图标显示。

1.4.5 高级搜索

实现更精准的搜索方式,同时包含以上搜素方式,包含对某个盘符的数据全部搜索、文件类型的搜索、扩展名的搜索、MFT号的搜索(一个盘只有一个mft号,一个mft号可能包含几个文件名(共享一块内存数据),mft一般是文件或目录)、PMFT号的搜索(和mft号一样,pmft号一般是目录)、文件属性的搜索(只读,隐藏等等)、文件名的搜索、文件大小的搜索、文件的创建时间和修改时间和访问时间的搜索。同时支持一键恢复到默认值。

1.5 设置

1.5.1 开机自启动

1:有两种启动方式,一种采用注册表方式,这种方式有个弊端,会被忽略掉,开机自启动会失败。
这里实现用的Windows任务计划的方式。每次开机登录的时候启动程序。下面使用Windows命令编程实现:

if(checked){
        //采用创建任务计划来完成开机登录自启
        AutoRunprocess->start(QString("schtasks.exe"),QStringList()<<"/create"<<"/tn"<
    	//取消开机登录自启
        AutoRunprocess->start(QString("schtasks.exe"),QStringList()<<"/delete"<<"/tn"< 

1.5.2 显示托盘图标

启用后会在Windows电脑右下角生成一个小图标,当软件关闭窗口最后一个时,这个时候软件会隐藏,不退出。不启用的话,默认直接退出程序。

1.5.3 实时搜索

启用后当主界面文件名编辑框发生改变,就会实时搜索数据。默认是不开启的。

1.5.4 隐藏搜索按钮

启用后对主界面的搜索按钮进行隐藏。默认显示。

1.5.5 正常文件启用(恢复/复制数据)

恢复/复制数据:默认是只有对已删除的文件才会启用这个功能,在设置启用后,正常文件也可以使用此功能,可以实现复制数据。

1.5.6 数据保存到数据库

启用后程序退出后会将当前的数据保存到数据库(程序目录下database文件夹中),留作备份。(注意:就算保存到数据库,程序下次启用也不会从数据库中加载)

1.5.7 窗口置顶

启用后主窗口永远在最前面。

1.5.8 UsnJournal不监控(不更新数据)

启用后所有盘符不监控usnjournal,所有文件的变化也不会更新。

1.5.9 隐藏某列

只有文件名没勾选,主界面只有文件名列显示。(作用:可以方便的把不感兴趣的信息隐藏)

2 打包发布

程序采用安装和覆盖安装的形式,同时创建桌面图标和开始菜单链接。
参考链接

3 体验地址

链接提取码:cjei

4 实现链接

链接


总结

提示:这里对文章进行总结:
首次更新:2022.6.20

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/986890.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号