2008-02-21 19:00
883人阅读 评论(0)
收藏
举报

Delphi中文件操作的总结

文件是同一种类型元素的有序集合,是内存与外设之间传输数据的渠道。文件的本质是一个数据流,所有的文件实际上是一串二进制序列。

文件管理包括:1、文件操作。2、目录操作。3、驱动器操作。三部分。

1、常见文件操作函数和过程。

1.1、AssignFile过程

作用:将一个外部文件的文件名与一个File类型的变量关联,并对变量进行初始化。

原型:procedure AssignFile(var F; FileName: String);

                F:一个File类型的变量,可以是任何数据类型。

                FileName:外部文件的文件名。

1.2、FileExists函数       

作用:用于测试指定文件名的文件是否存在。

原型:function FileExists(const FileName: String): Boolean;

                FileName:文件名。字符串类型。

注意:如果文件存在,返回True;否则,返回False。

1.3、Append过程

作用:为在一个已经存在的文件末尾添加文本做好准备工作。文件是只写方式打开的。

原型:procedure Append(var F: Text);

                F: 一个TextFile类型变量。

注意:这是一个对文本类型文件操作的过程。其中变量F必须和外部文件关联。如果F没有与外部文件关联,将抛出异常。如果F已经处于打开状态,则过程会关闭F并重新打开。文件指针位置将被设置在文件末尾。

1.4、Reset过程

作用:对于文本文件,Reset过程将以只读方式打开文件。对于类型文件和无类型文件,Reset过程将以可读写方式打开文件。

原型:procedure Reset(var F [: File; RecSize: Word ] );

                F:File类型变量,可以是任何文件类型。

                RecSize:文件的大小。它是一个可选的选项,只有当F为无类型文件时才可以被指定。如果F为无类型文件,则RecSize指定了在数据传输过程中使用的记录的大小。如果参数RecSize被省略了,则默认的记录大小为128字节。

注意:当该过程打开文件时,如果文件不存在则产生异常。如果文件已经打开了,则先关闭文件,然后重新打开,并将文件指针放到文件开头处。默认的文件模式(FileMode)为2,即可读写模式。如果文件模式在调用Reset过程前都还未改变,则尝试打开一个只读文件会失败。当调用Reset过程后,如果文件为空,则Eof函数返回True,否则返回False。

1.5、Rewrite过程

作用:对于一个已存在的文件,此操作将使文件被覆盖。对于一个不存在的文件,将创建并打开文件。对于一个已打开的文件,则关闭文件,并重新创建一个新的文件(覆盖原有的)。文件指针也被设置到空文件的开头处。

原型:procedure Rewrite(var F: File [; Recsize: Word ] );

                F:File类型变量,可以是任何文件类型。

                RecSize:文件的大小。它是一个可选的选项,只有当F为无类型文件时才可以被指定。如果F为无类型文件,则RecSize指定了在数据传输过程中使用的记录的大小。如果参数RecSize被省略了,则默认的记录大小为128字节。

注意:如果F被指定为一个空的文件名,如:AssignFile(F, ‘’),那么当Rewrite过程被调用时,F为标准的输出文件。如果F是文本文件,则F为只写模式。当调用Rewrite过程后,Eof(F)将总是为True。

1.6、Flush函数

作用:用于清空以输出方式打开的文本缓冲区,保证所有写入的字符全部写入外部文件。

原型:function Flush(var t: Text): Integer;

               F:F是文本类型变量。

注意:本函数只使用于文本文件的处理。当操作成功时,Flush返回0,否则,它将返回错误代码。当使用Rewrite过程或者Append过程打开一个文本文件用来输出时。Flush函数用于清空文件的缓冲区。这个过程保证了缓冲区的中的所有字符都已经写入外部文件中。对于因为输入而打开的文件,Flush函数不起任何作用。

1.7、Read过程

作用:用于从一个文件中读取数据。

原型:procedure Read(F , V1 [, V2,...,Vn ] );

            procedure Read( [ var F: Text; ] V1 [, V2,...,Vn ] );

               F:是一个文件变量。

               V1……Vn:用于存储从文件中读取的数据。

注意:在Delphi中,Read过程有两种语法,如果参数F是一个有类型文件,过程Read读取一组数据到一个变量中。如果参数F是一个文本文件变量,过程Read读取一个或多个值到一个或多个变量中。

1.8、ReadLn过程

作用:用于从文件中读取一行文本。

原型:procedure ReadLn([ var F: Text; ] V1 [, V2, ...,Vn ]);

              V:文本文件变量。

              V1……V2:用于存储读取的文本。

注意:在Delphi中,ReadLn过程用于读取文本文件的一行文本,并跳至该文本文件的下一行。

1.9、Write过程

作用:用于向一个文本文件写入数据。

原型:procedure Write( [var F: Text; ] P1 [ , P2,..., Pn] );        //文本类型文件

            procedure Write(F, V1,…Vn);                                  //有类型文件

              F:文本文件比变量。

              P1……Pn:代表向文件中写入的数据。

注意:对于文本文件来说,写入的内容应String类型变量。对于有类型文件来说,写入的必须是某种特定类型的数据。

1.10、WriteLn过程

作用:用来向文本文件中添加一行内容,即在写入内容后面有回车换行符。

原型:procedure WriteLn([ var F: Text; ] P1 [, P2, ...,Pn ] );

             F:文本文件比变量。

1.11、Eof函数

作用:用于判断是否到了文件的结尾。

原型:function Eof(var F): Boolean;              //用于类型文件和无类型文件

            function Eof [ (var F: Text) ]: Boolean;       //用于文本文件

典型应用:如果文件为空或当前位置在最后一个字符后,则返回True;否则,返回False。

1.12、Eoln函数

作用:测试文件指针是否指向一行的最后,适用于文本文件。如果当前的位置在一行的末尾或Eof(F)函数返回的是True,则Eoln返回的是True;否则返回False。

原型:function Eoln [(var F: Text) ]: Boolean;

典型应用:在程序中对文本文件进行操作时,有时需要限制数据的读取。如果只读取一行中某个位置到一行结束的部分数据。程序中可以使用Eoln函数进行判断。

1.13、CloseFile过程

作用:用来关闭文件,同事将文件记录盘上的文件与相关文件变量断开联系。

原型:procedure CloseFile(var F);

               F:一个文件类型变量

注意:通常来说,CloseFile过程与try…finally…模块结合使用。

1.14、DeleteFile函数

作用:将一个文件从记录盘上删除。

原型:function DeleteFile(const FileName: string): Boolean;

注意:如果文件不存在或无法删除,返回False;否则,返回True。

1.15、Erase过程

作用:用于删除一个已存在的文件。

原型:procedure Erase(var F);

注意:如果文件被打开,先关闭文件再执行删除操作。

1.16、FileGetAttr函数

作用:用于获取一个文件的属性设置。

原型:function FileGetAttr(const FileName: string): Integer;

注意:具体返回值代码参考帮助。

下面我们来总结一下Delphi中文件操作流程。Delphi中把文件分为3种:文本文件、类型文件和无类型文件。文本文件指可以被任意文件编辑器读取的ASCII文件。类型文件包含由程序员定义的数据类型的文件。无类型文件包含了其他所有的文件类型。

1、文本文件

Step 1  调用AssignFile()将文件变量与一个关联起来。如:

        AssignFile(MyTextFile,’TextFile.txt’);

Step 2  打开文件。有三种打开文件的方式:1.Rewrite过程创建并打开文件,对于一个已经存在的文件,此操作将使文件被覆盖;2.使用Reset过程只读地打开一个文件;3.使用Append过程向已经存在的文本文件追加文本。

Step 3  对文件进行操作。如Write或Read操作。

Step 4  使用CloseFile来关闭一个已经打开的文件。

下面是一个文本文件操作的示例。

例1:

procedure TForm1.Button1Click(Sender: TObject);

var

  MyTextFile: TextFile;              //定义变量MyTextFile为文本文件类型

begin

  (*步骤1,将文件变量与外部文件联系。相当于为外部文件找了个“替身”*)

  AssignFile(MyTextFile, ‘TextFile.txt’);

  (*判断操作的文件是否存在,不存在则创建文件。*)

  if FileExists(‘TextFile.txt’) then

  (*步骤2,打开文件,不过在打开前,最好进行文件是否存在的判断。*)

    Append(MyTextFile)

  else

    Rewrite(MyTextFile);

  try

  (*步骤3,对文件进行操作。*)

    WrtieLn(MyTextFile, ‘在文件末尾添加的文字!’);

    Flush(MyTextFile);    //清空缓冲区,确保字符串已经写入文件之中。

  finally

    (*步骤4,关闭打开的文件,CloseFile常与try…finally搭配,用于回收资源 *)

    CloseFile(MyTextFile);

  end;

end;

2、类型文件

Step 1  定义数据结构

Step 2  调用AssignFile()将文件变量与一个类型文件关联起来。

Step 3  打开类型文件。

Step 4  对类型文件进行操作。

Step 5  关闭已经打开的文件。

下面例子演示了类型文件的操作。

例2:

(*步骤1,定义数据结构。*)

type

  TPerson = record

    Name: string[20];

    Sex: string[4]

    Age: Integer;

  End;

procedure TForm1.Button1Click(Sender: TObject);

var

  PersonFile: file of TPerson;     //声明PersonFile变量为TPerson类型文件

  Person: TPerson;

begin

  (*步骤2,关联文件。*)

  AssignFile(PersonFile, ‘Person.dat’);

  (*步骤3,打开文件。 *)

  Reset(PersonFile);

  try

    While not Eof(PersonFile) do

(*步骤4,对文件进行操作。*)

    begin

      Read(PersonFile, Person);

      Memo1.Lines.Add(Person.Name);

      Memo1.Lines.Add(Person.Sex);

      Memo1.Lines.Add(IntToStr(Person.Age));

    end;

  finally

    (*步骤5,关闭文件。*)

    CloseFile(PersonFile);

  end;

end;

3、无类型文件

    先介绍一下无类型文件的相关知识。无类型文件是由数据块序列组成的,每个数据块数列为128字节大小的数据。当然这个数据块大小其实是可以自定义的。无类型文件数据的读写操作可以利用数据块实现。无类型文件的操作步骤与文本文件的操作步骤基本相同,只是两者调用的函数略有差异罢了。

Step 1  调用AssignFile()将文件变量与一个关联起来。

Step 2  打开文件。

Step 3  对文件进行操作。

Step 4  关闭文件,回收资源。

下面例子为无类型文件的“读取”过程。

例3:

procedure TForm1.Button1Click(Sender: TObject);

var

  UnTypedFile: file;        //定义无文件类型。

  Buf: array[0..128] of byte;  //定义缓冲区的大小。

  Num: Integer;

  Str: string;

begin

  (*步骤1,指定文件关联。*)

  AssignFile(UnTypedFile, ‘UnTypedFile.dat’);

  (*步骤2,打开文件。*)

  Reset(UnTypedFile);

  (*步骤3,对文件进行操作。*)

  try

    BlockRead(UnTypedFile, Buf, 1, Num);

    for I := 0 to 128 do

      Str := Str + VarToStr(Char(Buf[I]));

    Memo1.Lines.Add(Str);

  finally

    (*步骤4,关闭打开的文件,回收资源。*)

    CloseFile(UnTypedFile);

  end;

end;

分享到:
查看评论


  暂无评论


发表评论
  • 用 户 名:
  • csfinal9
  • 评论内容:
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5504次
    • 积分:137分
    • 排名:千里之外
    • 原创:8篇
    • 转载:6篇
    • 译文:0篇
    • 评论:0条
    文章搜索
    文章存档
    推荐文章

公司简介|招贤纳士|广告服务|银行汇款帐号|联系方式|版权声明|法律顾问|问题报告
QQ客服
微博客服 论坛反馈 联系邮箱:webmaster@csdn.net
服务热线:400-600-2320
京 ICP 证 070598 号
北京创新乐知信息技术有限公司 版权所有
世纪乐知(北京)网络技术有限公司 提供技术支持
江苏乐知网络技术有限公司 提供商务支持
Copyright © 1999-2012, CSDN.NET, All Rights Reserved 

delphi文件操作的总结的更多相关文章

  1. Delphi文件操作函数

    文件是同一种类型元素的有序集合,是内存与外设之间传输数据的渠道.文件的本质是一个数据流,所有的文件实际上是一串二进制序列.文件管理包括:1.文件操作.2.目录操作.3.驱动器操作.三部分. 1.常见文 ...

  2. delphi文件操作(比较全)

    Delphi中默认有input和output两个文件变量,使用可以不用定义,直接使用. 但: input:只读.output:只写.用时注意以免引起异常. 文件是由文件名标识的一组数据的集合,文件通常 ...

  3. Delphi 文件操作(路径、目录)

    Delphi利用系统环境变量获取常用系统目录 //譬如 %WINDIR% 是表示系统目录的系统变量, 可以这样获取: var s: string; begin s := GetEnvironmentV ...

  4. delphi 文件操作(信息获取)

    delphi获取Exe文件版本信息的函数 Type TFileVersionInfo = Record FixedInfo:TVSFixedFileInfo; {版本信息} CompanyName:S ...

  5. Delphi 文件操作(4)Reset

    procedure Reset(var F [: File; RecSize: Word ] );    { 作用:    对于文本文件,Reset过程将以只读方式打开文件,对于类型文件和无类型文件, ...

  6. 24篇Delphi文件操作文章

    http://www.cnblogs.com/keyvip/category/268043.html

  7. Delphi的文件操作

    参考自:http://www.cnblogs.com/railgunman/articles/1800318.html Delphi 中默认有input 和 output 两个文件变量,使用可以不用定 ...

  8. Delphi的文件操作(定义,关联,打开,读写,关闭)

    参考自:http://www.cnblogs.com/railgunman/articles/1800318.html Delphi 中默认有input 和 output 两个文件变量,使用可以不用定 ...

  9. delphi关于文件操作集锦

        关于文件操作集锦 取得该快捷方式的指向EXE关键词:快捷方式 LNK unit Unit1; interface usesWindows, Messages, SysUtils, Varian ...

随机推荐

  1. Navigation Nightmare---poj1984(多关系并查集)

    题目链接:http://poj.org/problem?id=1984 给定n个城市,m条边告诉你城市间的相对距离,接下来q组询问,问你在第几条边添加后两城市的距离. #include <ios ...

  2. python sort、sorted高级排序技巧(转)

    add by zhj: 没找到原文.可以按多个维度进行排序,而且可以指定他们的排序方向,如果维度都是数字,排序比较容易,用+/-号就可以 指定排序方向.否则,就调用多次sorted进行排序了,而且要按 ...

  3. thinkcmf安装教程与目录结构详解 快速上手版

    最近接了一个建站项目,要求用thinkcmf来搭建,ytkah在想php都大致一样吧,快速地下载安装包,可是!怎么安装呢?没看到安装指引文件或目录,查看了安装说明public目录做为网站根目录,入口文 ...

  4. 通过IP获取对应所在地的地址

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/wangshuxuncom/article/details/35988143         曾几何时 ...

  5. Openstack(十六)实现内外网结构

    类似于阿里云ECS主机的内外网(双网卡不通网段)的结构,最终实现内外网区分隔离. https://www.aliyun.com/product/ecs/?utm_medium=text&utm ...

  6. (转) 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)

    一.spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运 ...

  7. tar 压缩解压命令详解

    tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.下面的 ...

  8. MySQL server has gone away With statement: INSERT INTO `students`......

    mysql出现ERROR : (2006, 'MySQL server has gone away') 的问题意思就是指client和MySQL server之间的链接断开了. 首选分析给出可能出现的 ...

  9. 手把手教你学node.js之使用 superagent 与 cheerio 完成简单爬虫

    使用 superagent 与 cheerio 完成简单爬虫 目标 建立一个 lesson 3 项目,在其中编写代码. 当在浏览器中访问 http://localhost:3000/ 时,输出 CNo ...

  10. 20145326 《Java程序设计》第4周学习总结

    20145326 <Java程序设计>第4周学习总结 教材学习内容总结 第六章 一.何谓继承 1.继承共同行为 面向对象中,子类继承父类,避免重复的行为定义.不过并非为了避免重复定义行为就 ...