CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  API

[求助]如果将自定义资源中的文件快速的写入一个文件中

楼主leady27(冰冻)2005-12-04 21:42:15 在 VB / API 提问

我使用资源编辑器添加了一个2.81MB的文件的自定义资源,然后使用以下的代码将其写入一个文件中,只不过,速度实在是太慢了(如果该自定义资源的比较小,速度就比较快).  
          Dim   lpFileTemp()   As   Byte  
          Dim   lpFileSize   As   Long,   i   As   Long  
          Dim   iFileNum   As   Long  
          iFileNum   =   FreeFile  
          lpFileTemp   =   LoadResData(101,   "CUSTOM")  
          lpFileSize   =   UBound(lpFileTemp)   -   1  
          Open   lpFileName   For   Binary   As   #iFileNum  
          For   i   =   0   To   lpFileSize  
                  Put   #iFileNum,   ,   lpFileTemp(i)  
                  DoEvents  
          Next   i  
          Close   #iFileNum  
  我想,多数人将自定义资源中的内容写成文件的形式,一般是使用以上类似的代码吧..  
  是否有没有速度更快的方式.通过某个API等等. 问题点数:70、回复次数:6Top

1 楼rainstormmaster(暴风雨 v2.0)回复于 2005-12-04 23:08:46 得分 30

你一个一个字节的写当然慢了,改为:  
    Dim   lpFileTemp()   As   Byte  
  Dim   lpFileSize   As   Long,   i   As   Long  
  Dim   iFileNum   As   Long  
  iFileNum   =   FreeFile  
  lpFileTemp   =   LoadResData(101,   "CUSTOM")  
  Open   lpFileName   For   Binary   As   #iFileNum  
  Put   #iFileNum,   ,   lpFileTemp  
  Close   #iFileNumTop

2 楼northwolves(狼行天下)回复于 2005-12-05 01:09:52 得分 5

暴风雨正解  
   
  Open   lpFileName   For   Binary   As   #1  
  Put   #1,   ,   LoadResData(101,   "CUSTOM")  
  Close   #1  
  Top

3 楼baofeng(自古以来)回复于 2005-12-05 01:19:13 得分 35

晕~~   看这个:  
   
          Dim   pFileBuffer()   As   Byte  
          Dim   nFileSize   As   Long  
          Dim   hFile   as   long  
          dim   dwBytesWritten   as   long  
          dim   nReturn   as   long  
   
          pFileBuffer   =   LoadResData(101,   "CUSTOM")  
          nFileSize   =   UBound(pFileBuffer)   -   1  
   
          hFile   =   CreateFile(   pszFileName,  
                                                  GENERIC_WRITE,  
                                                  0,  
                                                  NULL,  
                                                  CREATE_ALWAYS,  
                                                  FILE_FLAG_SEQUENTIAL_SCAN,  
                                                  0    
                                              )  
                                               
          if   (   hFile   =   INVALID_HANDLE_VALUE   )  
                  exit   function  
           
          if   (   WriteFile(hFile,   pFileBuffer(0),   nFileSize,   dwBytesWritten,   0)   <>   0   )  
                  call   FlushFileBuffers(hFile)  
   
          '//   关闭文件句柄  
          call   CloseHandle(hFile)Top

4 楼baofeng(自古以来)回复于 2005-12-05 01:20:34 得分 0

CreateFile函数还有一个地方(NULL   改成   0)要改一下,我是从我的SDK代码COPY过来改成VB的Top

5 楼baofeng(自古以来)回复于 2005-12-05 01:28:50 得分 0

pFileBuffer   =   LoadResData(101,   "CUSTOM")  
          nFileSize   =   UBound(pFileBuffer)   -   1  
   
  这两行也可改成直接API方式:  
   
          dim   hResInfo   as   long  
          dim   hMem   as   long  
          dim   pBuffer   as   long  
   
          hResInfo   =   FindResource(app.hinstance,   101,   RT_RCDATA)  
          hMem   =   LoadResource(app.hinstance,   hResInfo)  
          nFileSize   =   SizeofResource(app.hinstance,   hResInfo)  
          pBuffer   =   LockResource(hMem)  
   
          '创建文件句柄....  
   
          '写到磁盘中...  
          if   (   WriteFile(hFile,   byval   pBuffer,   nFileSize,   dwBytesWritten,   0)   <>   0   )  
                  call   FlushFileBuffers(hFile)  
           
          '关闭文件句柄...  
   
          '释放内存对象句柄  
          FreeResource(hMem)Top

6 楼leady27(冰冻)回复于 2005-12-05 19:28:37 得分 0

嗯。。太感谢了,原来我还笨笨的一人字节一个字节的去读,怪不得要花怎么多时间呢!Top

相关问题

  • 文件写入自定义格式化的实现(详细见内容)
  • 急!DLL中如何把自定义形式的资源文件分离出另存为一个文件
  • 在DLL中,如何将一个自定义资源(如导入的文件)提取并保存为文件
  • 在资源文件Resource.h自定义了个消息,为什么会被自动删除?
  • 怎样自定义文件格式?
  • 如何自定义文件对话框
  • 自定义图象文件的显示
  • 自定义文件关联图标
  • 自定义文件格式的问题
  • 怎么自定义头文件

关键词

  • 文件
  • 代码
  • ifilenum
  • lpfiletemp
  • lpfilesize
  • 句柄
  • loadresdata
  • hresinfo
  • 自定义资源
  • hmem

得分解答快速导航

  • 帖主:leady27
  • rainstormmaster
  • northwolves
  • baofeng

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo