QT应用编程: 快速创建指定大小的空文件

简介: QT应用编程: 快速创建指定大小的空文件

一、环境介绍

操作系统: win10 64位

QT版本:  QT5.12.6

编译器:  MinGW 32

二、快速创建指定大小的空文件

2.1   核心函数

#include <windows.h>
/*
工程: UDP_Client
日期: 2021-04-22
作者: DS小龙哥
环境: win10 QT5.12.6 MinGW32
功能: 创建一个指定大小的空文件
// 创建的文件总大小 = dwHigh * 4G + dwLow
// 当总大小小于4G时,dwHigh可以设置为0,dwLow数字最大为4G - 1
*/
BOOL Widget::CreateTempFile(DWORD dwHigh, DWORD dwLow, TCHAR* pFileName)
{
    HANDLE hFile;
    HANDLE hMapFile;
    hFile = CreateFile(
        pFileName,
        GENERIC_WRITE | GENERIC_READ,
        FILE_SHARE_READ,
                nullptr,
        CREATE_ALWAYS,
        FILE_ATTRIBUTE_NORMAL,
        nullptr
        );
    if( hFile == INVALID_HANDLE_VALUE )
    {
        Log_Text_Display("文件创建失败1.\n");
        return FALSE;
    }
    hMapFile = CreateFileMapping(
        hFile,
        nullptr,
        PAGE_READWRITE,
        dwHigh,
        dwLow,
        nullptr
        );
    if( hMapFile == nullptr )
    {
        Log_Text_Display("文件创建失败2.\n");
        CloseHandle( hFile );
        return FALSE;
    }
    CloseHandle( hMapFile );
    CloseHandle( hFile );
    Log_Text_Display("随机文件创建成功.\n");
    return TRUE;
}

2.2   调用示例

//如果文件不存在
        if(file.exists()==false)
        {
            int value=ui->spinBox_auto_create_file_size->value();
            QDateTime current_date_time =QDateTime::currentDateTime();
            QString current_date =current_date_time.toString("yyyy-MM-dd-hh-mm-ss");
            Src_File=(QString("%1/%2.txt").arg(ui->lineEdit_auto_create_file_path->text()).arg(current_date));
            wchar_t *pWideChar = new wchar_t[Src_File.size()+1];
            int actualLen =Src_File.toWCharArray(pWideChar);
            pWideChar[actualLen]='\0';
            //如果大于4G
            if(value>4*1024)
            {
                //自动创建文件
                create_flag=CreateTempFile(value/(4*1024),value%(4*1024),pWideChar);
            }
            else
            {
                //自动创建文件
                create_flag=CreateTempFile(0,value*1024*1024,pWideChar);
            }
            //释放内存
            delete  [] pWideChar;
        }


目录
相关文章
|
3月前
|
网络协议 容器
【qt】 TCP编程小项目
【qt】 TCP编程小项目
68 0
|
3月前
【qt】如何读取文件并拆分信息?
【qt】如何读取文件并拆分信息?
35 0
|
4月前
|
C++
基于QT实现的拷贝文件以及实时进度条(简易版)
1.基于按钮或者菜单栏的槽里去写逻辑函数(我这边用的是菜单栏),ui实现的进度条 2.创建两个对象,一个是源文件,一个是目标文件分别用getopenfileName、getsavefileName函数即可。 3.利用QFile类去实现对两个文件的创建,因为QFile中可以获取文件的属性已经读写等。 4.循环的去读取源文件中的数据,然后写入目标文件
507 6
|
3月前
|
存储 算法 C++
【C++】C++ QT实现Huffman编码器与解码器(源码+课程论文+文件)【独一无二】
【C++】C++ QT实现Huffman编码器与解码器(源码+课程论文+文件)【独一无二】
|
3月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
744 4
|
3月前
|
XML 开发框架 API
【Qt 学习笔记】QWidget的windowTitle属性 | windowIcon属性 | qrc文件机制
【Qt 学习笔记】QWidget的windowTitle属性 | windowIcon属性 | qrc文件机制
166 1
|
3月前
QT 软件打包为一个单独可执行.exe文件流程
QT 软件打包为一个单独可执行.exe文件流程
786 0
|
3月前
|
API 开发工具 C语言
C语言与图形界面:利用GTK+、Qt等库创建GUI应用。
C语言与图形界面:利用GTK+、Qt等库创建GUI应用。
191 0
|
3月前
|
安全 C++ Windows
Windows下C++使用gRPC(Qt和VS,含文件包和使用方法)
Windows下C++使用gRPC(Qt和VS,含文件包和使用方法)
关于Qt的pri模块化编程详解
关于Qt的pri模块化编程详解