注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

鑫淼梦园的博客

圆你的梦想 从这里开始

 
 
 

日志

 
 

Delphi利用数据库实现文件打包  

2012-11-12 16:30:07|  分类: delphi xe2 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
  Delphi利用数据库实现文件打包的基本思路分析:

  【1】在Delphi中,把文件读取为文件流,再以流的形式保存在数据库的OLE 对象的字段中;

  【2】当要释放文件包时,可以直接读取数据库的OLE 对象字段,另保存为文件。

  以下为具体代码的实现过程:

  【1】打开Delphi,去到“File”=》“New”=》Application,新建一个应用程序工程;

  【2】在Form1新建1个Edit控件(用于输入被打包的文件的文件名),命名为FileName;新建两个Button控件,其一命名为Import,其二命名为Export;新建ADOTable1,新建DataSource1;

  【3】打开ACCESS新建一个数据库db1.mdb,只有两个字段,其一为filename(字符,主键),其二为filestream(OLE 对象),最后,就是把程序跟数据库连接起来(这里就不细说Delphi如何连接数据库,其实很简单)。

  正式开始编写代码,这里只需要给两个BUTTON控件的CLICK事件写代码即可:

   1. procedure TForm1.ImportClick(Sender: TObject);//这是打包文件的代码,这里只打包一个文件,具体的循环过程就靠你自己搞定了  
   2.   
   3. var  
   4.   
   5. stream:TFileStream;  
   6.   
   7. begin  
   8.   
   9. stream:= TFileStream.Create(FileName.Text,fmShareExclusive);  
  10.   
  11. ADOTable1.Append();  
  12.   
  13. TBlobField(ADOTable1.FieldByName('filestream')).LoadFromStream(stream);//保存文件流  
  14.   
  15. ADOTable1.FieldByName('filename').Value:=FileName.Text;//保存文件名  
  16.   
  17. ADOTable1.Post;  
  18.   
  19. stream.Free;  
  20.   
  21. DeleteFile(FileName.Text);  
  22.   
  23. end;  
  24.   
  25.   
  26.   
  27. procedure TForm1.ExportClick(Sender: TObject);//这是释放文件的代码,这里只释放第一个文件,具体的循环过程就靠你自己搞定了  
  28.   
  29. var  
  30.   
  31. stream:TMemoryStream;  
  32.   
  33. begin  
  34.   
  35. stream:=TMemoryStream.Create;  
  36.   
  37. ADOTable1.First;  
  38.   
  39. FileName.Text:=ADOTable1.FieldByName('filename').Value;  
  40.   
  41. TBlobField(ADOTable1.FieldByName('filestream')).SaveToStream(stream);  
  42.   
  43. stream.SaveToFile(FileName.Text);  
  44.   
  45. stream.Free;  
  46.   
  47. end; 

  附:由于文件的打包释放都是用流,因此可以利用流来压缩、加密文件!
  评论这张
 
阅读(275)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017