关于 Delphi 中流的使用(2) 用 TFileStream(文件流) 读写
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(文件流) 读写的更多相关文章
- 关于 Delphi 中流的使用(1) 用 TMemoryStream(内存流) 入门 &&& 关于指针的迷惑,我自己问的.
来自:http://www.cnblogs.com/del/archive/2008/01/01/1022124.html -------------------------------------- ...
- delphi的TFileStream 内存流
一.文件 文本文件是以行为单位进行读.写操作的.文本文件只能单独为读或写而打开,在一个打开的文本文件上同时进行读.写操作是不允许的. 二.定义 FileStream: TFileStream; 三.打 ...
- delphi 基础之三 文件流操作
文件流操作 Delphi操作流文件:什么是流?流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具.在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的, ...
- (转载)delphi文件流
delphi文件流 [复制链接] 在Delphi中,所有流对象的基类为TStream类,其中定义了所有流的共同属性和方法. TStream类中定义的属性介绍如下: 1.Size: 此属性以字节返回流中 ...
- delphi中通过http控件上载文件的问题(紧急) 整理的CSDN 帖子
http控件能不能实现post文件?要求效果就像普通的html中通过表单(form中<INPUT TYPE="FILE" NAME="FILE1" SIZ ...
- Delphi 中将一些 Dll等生成资源文件打包成一个独立的EXE程序方法步骤
资源文件一般为扩展名为res的文件,其自带的资源编译工具BRCC32.EXE(位于/Delphi/BIN目录下) 1.编写rc脚本文本 用记事本或其它文本编辑器编写一个扩展名为rc的文件,格式分别为在 ...
- java.io中流的操作:字节流、字符流
java.io中流的操作:字节流.字符流(1)使用File类打开一个文件(2)通过字节流或字符流的子类指定输出的位置(3)进行读/写操作(4)关闭输入/输出 1.字节流:主要是byte类型数据,以by ...
- Delphi 弹出Windows风格的选择文件夹对话框, 还可以新建文件夹
Delphi 弹出Windows风格的选择文件夹对话框, 还可以新建文件夹 unit Unit2; interface uses Windows, Messages, SysUtils, V ...
- Delphi窗体创建释放过程及单元文件小结(转)
Delphi窗体创建释放过程及单元文件小结 Delphi中的窗体,有模式窗体与非模式窗体两种.两种窗体的调用方式不同,模式窗体使用ShowModal显示,非模式窗体使用Show显示.当显示模式窗体的时 ...
随机推荐
- Red-Black Tree
A red-black tree is a Binary Search Tree that satisfy the red-black tree properties: 1. Every node i ...
- QML与C++混合编程详解(转)
原文转自:http://blog.csdn.net/ieearth/article/details/42243553 原文转自:https://www.cnblogs.com/findumars/p/ ...
- [Leetcode Week2]Merge Intervals
Merge Intervals题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/merge-intervals/description/ Descript ...
- Method and apparatus for providing total and partial store ordering for a memory in multi-processor system
An improved memory model and implementation is disclosed. The memory model includes a Total Store Or ...
- 转 appium解决每次运行都需要安装Unlock以及AppiumSetting的问题
一.需要解决的问题 在部分android机型上每次运行最新版的appium-desktop都需要安装AppiumSetting以及Unlock,并且安装过程需要用户手动来确认,即使测试机上已经安装了这 ...
- requests-html的js执行功能简单使用
#!/usr/bin/env python # encoding: utf-8 import asyncio from requests_html import HTMLSession import ...
- JVM CMS 常用参数配置(修订)
搜集到的一些参数内容,比较有用,大部分转载自并发编程网ifeve.com. -XX:+UseConcMarkSweepGC该标志首先是激活CMS收集器.默认HotSpot JVM使用的是并行收集器. ...
- python笔记-邮件发送(smtplib)【转载】
本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/python/ 前言 本篇总结了QQ邮箱和163邮箱发送邮件,邮件包含html中文和附件 ...
- Bootstrap模态框垂直居中展示的方法
在bootstrap.js中加入以下代码:
- (五)cobbler自定义系统安装
注意:需要提前获取到物理机对应的网卡的MAC地址,例如我这里使用虚拟机进行演示 cobbler system add --name=linux-node2.com --mac=00:50:56:22: ...