一、文件

文本文件是以行为单位进行读、写操作的。文本文件只能单独为读或写而打开,在一个打开的文本文件上同时进行读、写操作是不允许的。

二、定义

FileStream: TFileStream;

三、打开文件

Filestream:= TFileStream.Create(AFileName: string; Mode: Word);

参数AfileName:文件名;参数Mode:文件打开的方式。

Mode由打开模式与共享模式组成,取值见下表:

分类

参数

说明

fmCreate

建立文件, 如果指定文件名的文件已经存在,则以写模式打开

fmOpenRead

只读打开

fmOpenWrite

以写模式打开文件,写到文件的内容将替换文件以前的内容

fmOpenReadWrite

读写打开

fmShareCompat

共享模式, 兼容 Dos

fmShareExclusive

他的应用程序不能打开该文件

fmShareDenyWrite

其他的应用程序只能以只写方式打开

fmShareDenyRead

其他的应用程序只能以只读方式打开

fmShareDenyNone

其他的应用程序可以以任何方式打开文件

四、读写文件

function read(var buffer;count:longint):longint; //从文件流当前位置读count字节到缓冲区BUFFER;

function write(const buffer;count:longint):longint; //将缓冲区BUFFER的Count个字节的数据写到文件流当前位置中,覆盖该位置后面的Count个字节的数据;

function seek(offset:longint;origin:word):longint; //设置文件流当前读写指针位置,origin={soFromBeginning,soFromCurrent,soFromEnd}

function copyfrom(source:TStream;count:longint):longint; //从另一文件流中当前位置复制COUNT到当前文件流当前位置;

  

八、关闭文件

文件的关闭须调用FreeAndNil(FileStream)。

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

一个实例

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

type

TBuffer = array [0..16000]of char

procedure GetMessageFromDir( AFileName: string; var ABuffer: TBuffer);

var

     FileStream: TFileStream;

begin

       Filestream:=TFileStream.Create(AFileName,fmShareExclusive);

       Filestream.Position:=0;

       FileStream.Read(ABuffer,sizeof(ABuffer));

     FreeAndNil(FileStream);

end;

procedure PutMessageToDir(AFileName:string; Astr :string);

var

     FileStream: TFileStream;

     tempBuffer:TBuffer;

begin

     StrPcopy(tempBuffer,Astr);

     Filestream:=TFileStream.Create(AFileName,fmShareExclusive or fmCreate);

     FileStream.Position:=0;

     FileStream.Write(tempBuffer,length(AStr));

     FreeAndNil(FileStream);

end;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

一个实例

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

procedure TForm1.Button1Click(Sender: TObject);

var

  getStream,setStream: TFileStream; {声明一个文件流}

  getPath,setPath: string;

begin

  getPath := 'c:\temp\get.jpg'; {这个文件存在}

  setPath := 'c:\temp\set.jpg'; {这个会自动建立}

  getStream := TFileStream.Create(getPath, fmOpenRead or fmShareExclusive);

  setStream := TFileStream.Create(setPath, fmCreate);

  getStream.Position := 0; {流指针移到开始, 复制时从这里开始}

  setStream.CopyFrom(getStream, getStream.Size); {Copy 流}

  {CopyFrom 的第二个参数是要复制的内容大小; 如果为 0 , 不管指针在什么位置都会复制所有内容}

  getStream.Free;

  setStream.Free;

end;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

一个实例:读取流中的图片数据,显示图片

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

type

  TForm1 = class(TForm)

    img1: TImage;

    procedure FormShow(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

    fstream:TFileStream;

  end;

var

  Form1: TForm1;

  filename:string = '.\WeiMir.uib';

implementation

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);

var

bmp:Tbitmap;

begin

  fstream:=Tfilestream.create(filename,fmOpenRead);

  fstream.Seek(0,soFromBeginning);

  bmp:=TBitmap.Create;

  bmp.LoadFromStream(fstream);

  img1.Picture.Bitmap:=bmp;

end; 

end. 

  

delphi的TFileStream 内存流的更多相关文章

  1. Delphi从内存流中判断图片格式(好多相关文章)

    废话不多说了,利用内存流来判断文件的格式,其实判断文件的前几个字节就可以简单的判断这个文件是什么类型的文件,例如jpg文件 是 FFD8 (从低位到高位就要反过来 D8FF 下面都是一样)BMP文件  ...

  2. 用内存流 文件流 资源生成客户端(Delphi开源)

    正文:很多木马生成器就是用的内存流和文件流生成客户端的,废话不多说了,代码如下: unit Main; interface usesWindows, Messages, SysUtils, Varia ...

  3. 用Delphi从内存流中判断图片格式

    https://blog.csdn.net/my98800/article/details/53536774 废话不多说了,利用内存流来判断文件的格式,其实判断文件的前几个字节就可以简单的判断这个文件 ...

  4. 关于 Delphi 中流的使用(2) 用 TFileStream(文件流) 读写

    TStream 是一个抽象的基类, 不能直接生成对象. 在具体的应用中, 主要使用它的子孙类:TFileStream: 文件流TStringStream: 字符串流TMemoryStream: 内存流 ...

  5. 用Delphi从内存流中判断图片格式[转]

    http://blog.163.com/tfn2008%40yeah/blog/static/110321319201222243214337/ 用Delphi从内存流中判断图片格式[转] 2012- ...

  6. 关于 Delphi 中流的使用(1) 用 TMemoryStream(内存流) 入门 &&& 关于指针的迷惑,我自己问的.

    来自:http://www.cnblogs.com/del/archive/2008/01/01/1022124.html -------------------------------------- ...

  7. delphi 基础之三 文件流操作

    文件流操作 Delphi操作流文件:什么是流?流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具.在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的, ...

  8. 【Delphi】从内存(MemoryStream)使用WMP(WindowsMediaPlayer)控件播放视频音频(Play Video with WMP from MemoryStream)

    关键字: MemoryStream.WMP.WindowsMediaPlayer.Play .Load. Delphi.C++.C#.ActiveX控件 作  者: CaiBirdy 问  题:正常使 ...

  9. Mybatis拦截器 mysql load data local 内存流处理

    Mybatis 拦截器不做解释了,用过的基本都知道,这里用load data local主要是应对大批量数据的处理,提高性能,也支持事务回滚,且不影响其他的DML操作,当然这个操作不要涉及到当前所lo ...

随机推荐

  1. 让shell 变得容易理解

    1.重建你的语义模型(简单语义模型)2.变量,参数和方法命名3.测试用例4.足够的组块

  2. android脚步---跟随手指动的小球

    这次的学习主要是在包里面除自动生成的mainactivity.java之外,再新建一个class, DrawView,在mainactivity里面调用DrawView. 在DrawView里面主要是 ...

  3. 直接拿来用!最火的iOS开源项目(一)

    直接拿来用!最火的iOS开源项目(一) 发表于2013-06-05 10:17| 39373次阅读| 来源CSDN| 100 条评论| 作者唐小引 iOS开源项目GitHub移动开发最受欢迎的开源项目 ...

  4. 认识ExtJS(05)--

    ExtJS对Ajax的支持 •Ext.Ajax.request Ext.View.View数据视图类

  5. js 复制内容到剪切板

    function oCopy(objname){//只兼容IE var obj = $(objname); obj.select(); js=obj.createTextRange(); js.exe ...

  6. 读 《我为什么放弃Go语言》 有感

    最近又熟悉了下go语言,发现go语言还有许多设计不好的地方,然后又读到了<我为什么放弃Go语言>这篇文章, 对于某些方面,我还是比较认同的. 这篇文章总结了十六点,如下: 1.1 不允许左 ...

  7. treeview 与tabControl组合使用

    1.左边一个treeview,右边一个tabcontrol: 2.调整控件让tree在tabcontrol上,并让treeview压住tab页 3.将tab页的name设置成treeview的node ...

  8. 丢手帕问题as3版

    N个孩子围成一圈报数,报到M的退出,剩下的再从1继续报数,报到M的再退出,一直持续到只剩一个人,问剩下的是哪个? package { import flash.display.Sprite; publ ...

  9. CodeForces 660B Seating On Bus

    模拟. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #inc ...

  10. Linux中后台执行任务

    执行时, 可以在命令最后添加 & 使其后台执行, 但是其输出依然会显示, 而且其运行是和当前shell绑定的 如果脚本已经运行,  可以使用Ctrl-Z暂停, 然后使用 bg 让其转入后台, ...