delphi的TFileStream 内存流

  1. 一、文件  
  2.   
  3. 文本文件是以行为单位进行读、写操作的。文本文件只能单独为读或写而打开,在一个打开的文本文件上同时进行读、写操作是不允许的。  
  4.   
  5. 二、定义  
  6.   
  7. FileStream: TFileStream;  
  8.   
  9. 三、打开文件  
  10.   
  11. Filestream:= TFileStream.Create(AFileName: string; Mode: Word);  
  12.   
  13. 参数AfileName:文件名;参数Mode:文件打开的方式。  
  14.   
  15. Mode由打开模式与共享模式组成,取值见下表:   
  16. 分类  
  17.    
  18. 参数  
  19.    
  20. 说明  
  21.    
  22.   
  23. 打  
  24.   
  25. 开  
  26.   
  27. 模  
  28.   
  29. 式  
  30.    
  31. fmCreate  
  32.    
  33. 建立文件, 如果指定文件名的文件已经存在,则以写模式打开  
  34.    
  35.   
  36. fmOpenRead  
  37.    
  38. 只读打开  
  39.    
  40.   
  41. fmOpenWrite  
  42.    
  43. 以写模式打开文件,写到文件的内容将替换文件以前的内容  
  44.    
  45.   
  46. fmOpenReadWrite  
  47.    
  48. 读写打开  
  49.    
  50.   
  51. 共  
  52.   
  53. 享  
  54.   
  55. 模  
  56.   
  57. 式  
  58.    
  59. fmShareCompat  
  60.    
  61. 共享模式, 兼容 Dos  
  62.    
  63.   
  64. fmShareExclusive  
  65.    
  66. 他的应用程序不能打开该文件  
  67.    
  68.   
  69. fmShareDenyWrite  
  70.    
  71. 其他的应用程序只能以只写方式打开  
  72.    
  73.   
  74. fmShareDenyRead  
  75.    
  76. 其他的应用程序只能以只读方式打开  
  77.    
  78.   
  79. fmShareDenyNone  
  80.    
  81. 其他的应用程序可以以任何方式打开文件  
  82.    
  83.   
  84.   
  85.   
  86. 四、读写文件  
  87.   
  88. function read(var buffer;count:longint):longint//从文件流当前位置读count字节到缓冲区BUFFER;  
  89.   
  90. function write(const buffer;count:longint):longint//将缓冲区BUFFER的Count个字节的数据写到文件流当前位置中,覆盖该位置后面的Count个字节的数据;  
  91.   
  92. function seek(offset:longint;origin:word):longint//设置文件流当前读写指针位置,origin={soFromBeginning,soFromCurrent,soFromEnd}  
  93.   
  94. function copyfrom(source:TStream;count:longint):longint//从另一文件流中当前位置复制COUNT到当前文件流当前位置;  
  95.   
  96. 八、关闭文件  
  97.   
  98. 文件的关闭须调用FreeAndNil(FileStream)。  
  99.   
  100.   
  101.   
  102. //  
  103.   
  104. 一个实例  
  105.   
  106. /  
  107.   
  108. type  
  109.   
  110. TBuffer = array [0..16000]of char  
  111.   
  112. procedure GetMessageFromDir( AFileName: stringvar ABuffer: TBuffer);  
  113.   
  114. var  
  115.   
  116.      FileStream: TFileStream;  
  117.   
  118. begin  
  119.   
  120.        Filestream:=TFileStream.Create(AFileName,fmShareExclusive);  
  121.   
  122.        Filestream.Position:=0;  
  123.   
  124.        FileStream.Read(ABuffer,sizeof(ABuffer));  
  125.   
  126.      FreeAndNil(FileStream);  
  127.   
  128. end;  
  129.   
  130. procedure PutMessageToDir(AFileName:string; Astr :string);  
  131.   
  132. var  
  133.   
  134.      FileStream: TFileStream;  
  135.   
  136.      tempBuffer:TBuffer;  
  137.   
  138. begin  
  139.   
  140.      StrPcopy(tempBuffer,Astr);  
  141.   
  142.      Filestream:=TFileStream.Create(AFileName,fmShareExclusive or fmCreate);  
  143.   
  144.      FileStream.Position:=0;  
  145.   
  146.      FileStream.Write(tempBuffer,length(AStr));  
  147.   
  148.      FreeAndNil(FileStream);  
  149.   
  150. end;  
  151.   
  152.   
  153. //  
  154.   
  155. 一个实例  
  156.   
  157. /  
  158.   
  159. procedure TForm1.Button1Click(Sender: TObject);  
  160.   
  161. var  
  162.   
  163. getStream,setStream: TFileStream; {声明一个文件流}  
  164.   
  165. getPath,setPath: string;  
  166.   
  167. begin  
  168.   
  169. getPath := 'c:\temp\get.jpg'{这个文件存在}  
  170.   
  171. setPath := 'c:\temp\set.jpg'{这个会自动建立}  
  172.   
  173. getStream := TFileStream.Create(getPath, fmOpenRead or fmShareExclusive);  
  174.   
  175. setStream := TFileStream.Create(setPath, fmCreate);  
  176.   
  177. getStream.Position := 0{流指针移到开始, 复制时从这里开始}  
  178.   
  179. setStream.CopyFrom(getStream, getStream.Size); {Copy 流}  
  180.   
  181. {CopyFrom 的第二个参数是要复制的内容大小; 如果为 0 , 不管指针在什么位置都会复制所有内容}  
  182.   
  183. getStream.Free;  
  184.   
  185. setStream.Free;  
  186.   
  187. end;  
  188.   
  189.   
  190. //  
  191.   
  192. 一个实例:读取流中的图片数据,显示图片  
  193.   
  194. /  
  195.   
  196. type  
  197.   
  198. TForm1 = class(TForm)  
  199.   
  200.     img1: TImage;  
  201.   
  202.     procedure FormShow(Sender: TObject);  
  203.   
  204. private  
  205.   
  206.     { Private declarations }  
  207.   
  208. public  
  209.   
  210.     { Public declarations }  
  211.   
  212.     fstream:TFileStream;  
  213.   
  214. end;  
  215.   
  216.   
  217. var  
  218.   
  219. Form1: TForm1;  
  220.   
  221. filename:string = '.\WeiMir.uib';  
  222.   
  223. implementation  
  224.   
  225.   
  226. {$R *.dfm}  
  227.   
  228.   
  229. procedure TForm1.FormShow(Sender: TObject);  
  230.   
  231. var  
  232.   
  233. bmp:Tbitmap;  
  234.   
  235. begin  
  236.   
  237. fstream:=Tfilestream.create(filename,fmOpenRead);  
  238.   
  239. fstream.Seek(0,soFromBeginning);  
  240.   
  241. bmp:=TBitmap.Create;  
  242.   
  243. bmp.LoadFromStream(fstream);  
  244.   
  245. img1.Picture.Bitmap:=bmp;  
  246.   
  247. end;  
  248.   
  249. end.  
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值