一、环境介绍
操作系统: win10 64位
QT版本: QT5.12.6
编译器: MinGW 32
#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; }