一、环境介绍
操作系统: win10 64位
QT版本: QT5.12.6
编译器: MinGW 32
二、快速创建指定大小的空文件
2.1 核心函数
代码语言:javascript复制#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 调用示例
代码语言:javascript复制//如果文件不存在
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]='