QT应用编程: 快速创建指定大小的空文件
【摘要】
一、环境介绍
操作系统: win10 64位
QT版本: QT5.12.6
编译器: MinGW 32
二、快速创建指定大小的空文件
2.1 核心函数
#include <windows.h> /*工程: UDP_Client日期:...
一、环境介绍
操作系统: 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;
-
}
文章来源: xiaolong.blog.csdn.net,作者:DS小龙哥,版权归原作者所有,如需转载,请联系作者。
原文链接:xiaolong.blog.csdn.net/article/details/116029038
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)