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

举报
DS小龙哥 发表于 2021/12/10 00:12:30 2021/12/10
【摘要】 一、环境介绍 操作系统: 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   核心函数


  
  1. #include <windows.h>
  2. /*
  3. 工程: UDP_Client
  4. 日期: 2021-04-22
  5. 作者: DS小龙哥
  6. 环境: win10 QT5.12.6 MinGW32
  7. 功能: 创建一个指定大小的空文件
  8. // 创建的文件总大小 = dwHigh * 4G + dwLow
  9. // 当总大小小于4G时,dwHigh可以设置为0,dwLow数字最大为4G - 1
  10. */
  11. BOOL Widget::CreateTempFile(DWORD dwHigh, DWORD dwLow, TCHAR* pFileName)
  12. {
  13. HANDLE hFile;
  14. HANDLE hMapFile;
  15. hFile = CreateFile(
  16. pFileName,
  17. GENERIC_WRITE | GENERIC_READ,
  18. FILE_SHARE_READ,
  19. nullptr,
  20. CREATE_ALWAYS,
  21. FILE_ATTRIBUTE_NORMAL,
  22. nullptr
  23. );
  24. if( hFile == INVALID_HANDLE_VALUE )
  25. {
  26. Log_Text_Display("文件创建失败1.\n");
  27. return FALSE;
  28. }
  29. hMapFile = CreateFileMapping(
  30. hFile,
  31. nullptr,
  32. PAGE_READWRITE,
  33. dwHigh,
  34. dwLow,
  35. nullptr
  36. );
  37. if( hMapFile == nullptr )
  38. {
  39. Log_Text_Display("文件创建失败2.\n");
  40. CloseHandle( hFile );
  41. return FALSE;
  42. }
  43. CloseHandle( hMapFile );
  44. CloseHandle( hFile );
  45. Log_Text_Display("随机文件创建成功.\n");
  46. return TRUE;
  47. }

2.2   调用示例


  
  1. //如果文件不存在
  2. if(file.exists()==false)
  3. {
  4. int value=ui->spinBox_auto_create_file_size->value();
  5. QDateTime current_date_time =QDateTime::currentDateTime();
  6. QString current_date =current_date_time.toString("yyyy-MM-dd-hh-mm-ss");
  7. Src_File=(QString("%1/%2.txt").arg(ui->lineEdit_auto_create_file_path->text()).arg(current_date));
  8. wchar_t *pWideChar = new wchar_t[Src_File.size()+1];
  9. int actualLen =Src_File.toWCharArray(pWideChar);
  10. pWideChar[actualLen]='\0';
  11. //如果大于4G
  12. if(value>4*1024)
  13. {
  14. //自动创建文件
  15. create_flag=CreateTempFile(value/(4*1024),value%(4*1024),pWideChar);
  16. }
  17. else
  18. {
  19. //自动创建文件
  20. create_flag=CreateTempFile(0,value*1024*1024,pWideChar);
  21. }
  22. //释放内存
  23. delete [] pWideChar;
  24. }

 

 

 

文章来源: xiaolong.blog.csdn.net,作者:DS小龙哥,版权归原作者所有,如需转载,请联系作者。

原文链接:xiaolong.blog.csdn.net/article/details/116029038

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。