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

THandleStream: 是 TFileStream 的父类、TStream 的子类
TCustomMemoryStream: 是 TMemoryStream 和 TResourceStream 的父类、TStream 的子类

与流相关的常用类还有: TReader、TWriter、TCompressionStream、TDecompressionStream

来一个文件流的例子:


procedure TForm1.Button1Click(Sender: TObject);
var
  getStream,setStream: TFileStream; {声明一个文件流}
  getPath,setPath: string;
begin
  getPath := 'c:\temp\get.jpg'; {需要这个文件存在}
  setPath := 'c:\temp\set.jpg'; {这个会自动建立}
  if not FileExists(getPath) then
  begin
    ShowMessage('找不到我们要测试的图片文件: ' + getPath);
    Exit;
  end;   getStream := TFileStream.Create(getPath, fmOpenRead or fmShareExclusive);
  setStream := TFileStream.Create(setPath, fmCreate);
  {建立文件流需要两个参数: 参数 1 是路径, 参数 2 是打开模式}   getStream.Position := ; {流指针移到开始, 复制时从这里开始}
  setStream.CopyFrom(getStream, getStream.Size); {Copy 流}
  {CopyFrom 的参数 2 是要复制的内容大小; 如果为 0 , 不管指针在什么位置都会复制所有内容}
  {CopyFrom 返回实际拷贝的字节数}   {这时硬盘上就有 set.jpg 文件, 与 get.jpg 一么一样}
  {其实就是复制文件, 不过这里我们是用文件流实现的}   getStream.Free;
  setStream.Free;
end;

TFileStream 打开模式与共享模式:

分类 参数 说明



fmCreate  建立文件, 如果存在则打开它。
fmOpenRead 只读打开
fmOpenWrite 只写打开
fmOpenReadWrite 读写打开



fmShareCompat 共享模式, 兼容 Dos
fmShareExclusive  不允许别人以任何方式打开
fmShareDenyWrite  允许别人以只写方式打开
fmShareDenyRead 允许别人以只读方式打开
fmShareDenyNone 允许别人以任何方式打开

关于 Delphi 中流的使用(2) 用 TFileStream(文件流) 读写的更多相关文章

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

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

  2. delphi的TFileStream 内存流

    一.文件 文本文件是以行为单位进行读.写操作的.文本文件只能单独为读或写而打开,在一个打开的文本文件上同时进行读.写操作是不允许的. 二.定义 FileStream: TFileStream; 三.打 ...

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

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

  4. (转载)delphi文件流

    delphi文件流 [复制链接] 在Delphi中,所有流对象的基类为TStream类,其中定义了所有流的共同属性和方法. TStream类中定义的属性介绍如下: 1.Size: 此属性以字节返回流中 ...

  5. delphi中通过http控件上载文件的问题(紧急) 整理的CSDN 帖子

    http控件能不能实现post文件?要求效果就像普通的html中通过表单(form中<INPUT TYPE="FILE" NAME="FILE1" SIZ ...

  6. Delphi 中将一些 Dll等生成资源文件打包成一个独立的EXE程序方法步骤

    资源文件一般为扩展名为res的文件,其自带的资源编译工具BRCC32.EXE(位于/Delphi/BIN目录下) 1.编写rc脚本文本 用记事本或其它文本编辑器编写一个扩展名为rc的文件,格式分别为在 ...

  7. java.io中流的操作:字节流、字符流

    java.io中流的操作:字节流.字符流(1)使用File类打开一个文件(2)通过字节流或字符流的子类指定输出的位置(3)进行读/写操作(4)关闭输入/输出 1.字节流:主要是byte类型数据,以by ...

  8. Delphi 弹出Windows风格的选择文件夹对话框, 还可以新建文件夹

    Delphi 弹出Windows风格的选择文件夹对话框, 还可以新建文件夹     unit Unit2; interface uses  Windows, Messages, SysUtils, V ...

  9. Delphi窗体创建释放过程及单元文件小结(转)

    Delphi窗体创建释放过程及单元文件小结 Delphi中的窗体,有模式窗体与非模式窗体两种.两种窗体的调用方式不同,模式窗体使用ShowModal显示,非模式窗体使用Show显示.当显示模式窗体的时 ...

随机推荐

  1. [转]如何整理Linux磁盘碎片,竟与Windows的方式大不同 返回操作系统首页

    Linux 系统永远不需要整理磁盘碎片的神话相信很多人都听说过.由于 Linux 采用了优秀的日志文件系统(ext2.ext3.ext4, btrfs等),在绝大多数情况下确实是不需要进行磁盘碎片整理 ...

  2. Git常用命令总结【转】

    转自:http://www.cnblogs.com/mengdd/p/4153773.html 查看.添加.提交.删除.找回,重置修改文件 git help <command> # 显示c ...

  3. 出现“error c4430缺少类型说明符-假定为int。注意C++不支持默认int

    出现这种错误的原因,是因为函数没有写返回值.是在VC6.0的工程转为高版本(VS2010)的时候经常出现的; #include <stdio.h> main() { printf(&quo ...

  4. 【C++】类内函数与内联函数

    今天本来在休息,结果小伙伴问了我个问题,把我的三观都颠覆了.get到了新的知识点,这里记录一下. 内类的函数,都默认为是内联函数!! 这居然是真的.然后我就懵了.因为内联函数应该是定义在头文件里比较好 ...

  5. KDJ金叉测试

    # -*- coding: utf-8 -*- import os import pandas as pd # ========== 遍历数据文件夹中所有股票文件的文件名,得到股票代码列表stock_ ...

  6. docker从零开始 存储(六)存储驱动如何选择

    Docker存储驱动程序 理想情况下,将非常少的数据写入容器的可写层,并使用Docker卷来写入数据.但是,某些工作负载要求您能够写入容器的可写层.这是存储驱动程序的用武之地. Docker使用可插拔 ...

  7. Mysql快速导出导入数据的实验

    一.创建测试数据库 CREATE database example; use example; create TABLE `user` ( `id` ) NOT NULL, `last_name` v ...

  8. ionic3 学习记录

    1生命周期 ionViewDidLoad(){ console.log("1.0 ionViewDidLoad 当页面加载的时候触发,仅在页面创建的时候触发一次,如果被缓存了,那么下次再打开 ...

  9. Delphi:对TNotifyEvent的理解

    type TNotifyEvent = procedure (Sender: TObject) of object; 在Delphi中事件也是一个类,类型就是事件类型,不同的事件属于不同的类.TNot ...

  10. 【转载】bash: ifconfig: command not found 解决办法

    原本使用ifconfig 可以使用,今天是怎么了,可能安装软件修改了,百度~~ [oracle@localhost /]$ ifconfig 提示:“bash: ifconfig: command n ...