首页 考试吧论坛 Exam8视线 考试商城 网络课程 模拟考试 考友录 实用文档 求职招聘 论文下载
2011中考 | 2011高考 | 2012考研 | 考研培训 | 在职研 | 自学考试 | 成人高考 | 法律硕士 | MBA考试
MPA考试 | 中科院
四六级 | 职称英语 | 商务英语 | 公共英语 | 托福 | 雅思 | 专四专八 | 口译笔译 | 博思 | GRE GMAT
新概念英语 | 成人英语三级 | 申硕英语 | 攻硕英语 | 职称日语 | 日语学习 | 法语 | 德语 | 韩语
计算机等级考试 | 软件水平考试 | 职称计算机 | 微软认证 | 思科认证 | Oracle认证 | Linux认证
华为认证 | Java认证
公务员 | 报关员 | 银行从业资格 | 证券从业资格 | 期货从业资格 | 司法考试 | 法律顾问 | 导游资格
报检员 | 教师资格 | 社会工作者 | 外销员 | 国际商务师 | 跟单员 | 单证员 | 物流师 | 价格鉴证师
人力资源 | 管理咨询师考试 | 秘书资格 | 心理咨询师考试 | 出版专业资格 | 广告师职业水平
驾驶员 | 网络编辑
卫生资格 | 执业医师 | 执业药师 | 执业护士
会计从业资格考试会计证) | 经济师 | 会计职称 | 注册会计师 | 审计师 | 注册税务师
注册资产评估师 | 高级会计师 | ACCA | 统计师 | 精算师 | 理财规划师 | 国际内审师
一级建造师 | 二级建造师 | 造价工程师 | 造价员 | 咨询工程师 | 监理工程师 | 安全工程师
质量工程师 | 物业管理师 | 招标师 | 结构工程师 | 建筑师 | 房地产估价师 | 土地估价师 | 岩土师
设备监理师 | 房地产经纪人 | 投资项目管理师 | 土地登记代理人 | 环境影响评价师 | 环保工程师
城市规划师 | 公路监理师 | 公路造价师 | 安全评价师 | 电气工程师 | 注册测绘师 | 注册计量师
缤纷校园 | 实用文档 | 英语学习 | 作文大全 | 求职招聘 | 论文下载 | 访谈 | 游戏
您现在的位置: 考试吧(Exam8.com) > 计算机等级考试 > 计算机二级 > Delphi > 复习资料 > 正文

2011年计算机等级考试Delphi讲义:文件管理

来源:考试吧Exam8.com) 2010-10-27 14:27:37 考试吧:中国教育培训第一门户 模拟考场
本章首先介绍Delphi文件管理的基本概念和标准过程/函数,并提供了一个记录文件的应用实例,这是从我们实际课题开发中提取出来的。而后介绍Delphi提供的文件控件的使用方法。最后提供的一个综合例程MDI文件管理器则是对Delphi文件管理功能的综合应用。

  第六章 文件管理

  文件是同一类型元素的有序集合,是内存与外设间传输数据的渠道。一些外设如显示器、键盘、打印机等都可以看作文件,但最常用的还是磁盘文件,这也是本章我们主要讨论的对象。

  Delphi继承了Object Pascal的文件管理功能,并有很大的发展,其中最主要的是提供了用于文件管理的标准控件,同时也提供了更多的文件管理函数。利用Delphi的强大功能,开发一个自己的文件管理系统就成为很容易的事。

  本章首先介绍Delphi文件管理的基本概念和标准过程/函数,并提供了一个记录文件的应用实例,这是从我们实际课题开发中提取出来的。而后介绍Delphi提供的文件控件的使用方法。最后提供的一个综合例程MDI文件管理器则是对Delphi文件管理功能的综合应用。

  6.1 文件类型和标准过程

  Delphi同Object Pascal一样支持三种文件类型,即:文本文件、记录文件、无类型文件。

  6.1.1文本文件

  文本文件类型的变量用如下方法声明:

  var

  TextFileVar: Text ;

  文本文件是以行为单位进行读、写操作的。由于每一行长度不一定相同,不能计算出给定行在文件中的确切位置,因而只能顺序地读写。而且文本文件只能单独为读或写而打开,在一个打开的文本文件上同时进行读、写操作是不允许的。

  6.1.1.1 文本文件的打开、关闭

  文本文件的打开需要两个步骤:(1). 文件变量与文件名关联;(2). 初始化读写。

  联文件变量与文件名调用AssignFile标准过程:

  AssignFile ( TextFileVar , FileName ) ;

  FileName 既可以是全路径名,也可以仅是文件名。对于后者系统将在当前目录下查找。

  AssignFile是Delphi新提供的一个函数,其功能等价于Object Pascal中的Assign。而Assign在Delphi中更多地被用作一个方法名。

  初始化读写有三种方式:

  1. Reset : 为读打开文件并把文件指针移动到文件首;

  2. Rewrite : 为写创建一个新文件;

  3. Append : 为写打开存在的文件并把文件指针定位在文件尾。

  当使用Reset或Append过程而文件不存在时将会引发一个I/O异常。有关I/O异常的处理请参看本章例程和第十二章中的介绍。

  文件的关闭很简单,只须调用CloseFile过程即可。

  虽然Delphi应用程序在退出时会自动关闭所有打开的文件,但自己动手关闭文件可以确保释放文件句柄,并使程序的可移植性增强。

  为保持兼容,Delphi也允许用户用Assign建立关联,Close关闭文件。

  6.1.1.2 文本文件的读写

  从文本文件中读取信息用Read、Readln两个标准过程。

  当读入数值时,Read、Readln假定数值是用一个或多个空格分开的,而不是逗号、分号或其它字符。对如下一条语句:

  Read ( TextFileVar , Num1 , Num2 , Num3 ) ;

  如果文件中的数值是:

  100 200 300

  则能够成功读入,而若文件中的数值是

  100 200, 300

  则Read读入“200,”并试图把它转化成一个数值时会引发一个异常。

  当读入字符是字符串时,Read、Readln过程总是读取尽可能多的字符填充到字符串变量中或一直读到行结束符为止。因此从文本文件中读取格式化的字符串数据,必须声明与其长度相匹配的字符串变量。如果要从文件中读取单词,必须先把文件中的每一行读入字符串,然后再从字符串中逐个分析出单词。或者一次只从文本文件中读入一个字符并测试每个字符后是否是单词断开处。

  格式化字符串之间的分隔符应读入到一个临时变量中,而字符串与数值、数值与数值间的分隔符读入时会自动识别剔除。对如下一行数据:

  Mon 12:10 40 50

  定义

  var

  Day: string[3] ;

  Time: string[5] ;

  Num1, Num2: Integer ;

  则须用如下的read 语句读入:

  read ( TextFileVar , Day , c , Time , Num1 , Num2 ) ;

  C为一个临时字符变量。

  6.1.1.3 文本文件的编辑

  在Delphi中实现对一个文本文件的编辑,只须让其与一个Tmemo控件建立关联即可:

  Memo1.Lines.LoadFromFile ( TextFileName ) ;

  这样在TMemo上所做的一切修改当调用Memo部件的SaveToFile方法后都会反映到文件中去。

  6.1.2 记录文件

  记录文件是一种操作更为灵活的文件类型。它允许同时为读和写打开,而且由于记录文件中每条记录的长度固定,所以可随机存取。

  记录文件的类型变量可如下声明:

  var

  RecordFileVar: file of RecordType;

  RecordType是一个自定义的记录类型。

  有关记录文件的操作我们将在下一节中结合例程进行讨论。

  6.1.3 无类型文件

  无类型文件提供了底层的I/O通道,可用于存取可变长度记录的文件。经常用于文件的复制操作中。由于Delphi提供了更好的方法(见第四节),所以无类型文件很少使用。有兴趣的读者可参看BlockRead、BlockWrite两个联机帮助主题。

  6.1.4 Delphi的文件管理标准过程

  根据功能我们把标准过程划分为十一类进行介绍。

  6.1.4.1 文件的打开与关闭

  AssignFile :把一个外部文件名和一个文件变量相关联

  Reset :打开一个存在的文件

  Rewrite :创建并打开一个新文件(或覆盖原有文件)

  Append :以添加方式打开一个文件(只适用于文本文件)

  CloseFile : 关闭一个打开的文件

  FileOpen :打开一个特定的文件并返回文件句柄

  FileCreate :创建一个给定文件名的文件并返回文件句柄

  FileClose :关闭一个特定句柄的文件

  后边三个文件主要供系统内部使用,在文件复制的编程中也往往会用到。它们操作的对象是文件句柄而不是文件变量。

  6.1.4.2 文件定位

  Seek :把文件当前位置移到指定部分

  FilePos : 返回文件的当前位置

  Eoln : 返回行结束标志

  EOF : 返回文件结束标志

  FileSeek : 改变当前文件指针的位置

  Seek与FileSeek的区别是:1. Seek仅用于记录文件;2. FileSeek的参数是文件句柄、偏移量、起始位置。其中起始位置有文件首、当前位置、文件尾三种选择。Seek的参数是文件变量、偏移量,偏移量是从文件首开始定位的。3. FileSeek的偏移量以字节数来计算,而Seek是根据记录号进行移动。

  Seek、FilePos仅用于记录文件。但任何文件都可以看作是基于字节的记录文件。下面一段程序表示了它们的用法。

  { 该例子的设计界面为一个包含TOpenDialog部件的窗体。}

  uses Dialogs;

  var

  f: file of Byte;

  size: Longint;

  S: String;

  y: Integer;

  begin

  if OpenDialog1.Execute then

  begin

  AssignFile(f, OpenDialog1.FileName);

  Reset(f);

  size := FileSize(f);

  S := 'File size in bytes: ' + IntToStr(size);

  y := 10;

  Canvas.TextOut(5, y, S);

  y := y + Canvas.TextHeight(S) + 5;

  S := 'Seeking halfway into file...';

  Canvas.TextOut(5, y, S);

  y := y + Canvas.TextHeight(S) + 5;

  Seek(f,size div 2);

  S := 'Position is now ' + IntToStr(FilePos(f));

  Canvas.TextOut(5, y, S);

  CloseFile(f);

  end;

  end.

  6.1.4.3 文件删除与截断

  Erase : 删除一个存在的文件

  DeleteFile : 删除一个文件

  Truncate :从文件当前位置将文件截断

  Erase与DeleteFile的区别是:Erase以文件变量为参数,当文件不能删除时引起一个异常;DeleteFile以文件名为参数,当文件不存在或不能删除时返回False,而并不引起一个异常。

  6.1.4.4 文件名操作

  Rename :文件更名,以文件变量为操作对象

  RenameFile :文件更名,参数为文件的原名和新名

  ChangeFileExt :改变文件扩展名

  ExpandFileName :返回文件全路径名

  ExtractFileExt :返回文件扩展名

  ExtractFileName :从全路径名中返回文件名

  ExtractFilePath :返回特定文件的路径

  6.1.4.5 文件属性

  FileGetAttr :返回文件属性

  FileSetAttr :设置文件属性

  6.1.4.6 文件状态

  FileSize :返回文件对象大小

  IOResult :返回上一次I/O操作的状态

  FileExists :检测文件是否存在

  6.1.4.7 文件日期

  DateTimeToFileDate :把Delphi日期格式转换为DOS日期格式

  FileDateToDateTime :把DOS日期格式转换为Delphi日期格式

  FileGetDate :返回文件的DOS日期时间戳

  FileSetDate :设置文件的DOS日期时间戳

  6.1.4.8 文件读写

  Read,Readln :从文本或记录文件中读取变量

  Write :将指定变量写入文本或记录文件

  Writeln :将指定变量写入文本文件并写入一个行结束标志

  FileRead :从一个指定文件中读取变量

  FileWrite :向指定文件写入数据

  FileRead和FileWrite都是以文件句柄为操作对象,主要供系统内部使用。

  6.1.4.9 目录操作

  MkDir :创建当前目录的子目录

  ChDir :改变当前目录

  GetDir :返回特定磁盘的当前目录

  RmDir :删除一个空子目录

  6.1.4.10 磁盘操作

  DiskFree :返回磁盘自由空间

  DiskSize :返回特定磁盘的大小

  6.1.4.11 文件查找

  FileSearch :查找目录中是否存在某一特定文件

  FindFirst :在目录中查找与给定文件名(可以包含匹配符)及属性集相匹配的第一个文件

  FindNext :返回符合条件的下一个文件

  FindClose :中止一个FindFirst / FindNext序列

  有关文件管理标准过程/函数的更详细资料,请查阅Delphi相关的Help主题。以上的大部分过程在后面都有应用实例,读者可以从中体会其用法。

  在Delphi的联机帮助Help系统中把有关文件的过程/函数分为两个主题:I/O Routine和File_Management Routine。前者大部分以文件变量为操作对象,而后者大部分以文件名或文件句柄为操作对象。这里为了方便读者的使用,我们按功能重新进行了分类。在下一节中主要应用I/O Routine主题下的过程,而在第四节的综合举例中主要应用File_Management Routine主题下的过程。

  另外,Windows提供了许多有关文件管理的API函数。虽然在一般情况下,利用Delphi提供的函数已足够解决问题,但有时候仍然需要使用Windows API。在(6.4.4.2)中我们就用到了Windows API函数GetDriveType。有关Windows API函数的情况,请读者参阅相关的资料,这里不再进行介绍。

1 2 3 4 5 6 7 8 9 下一页
  相关推荐:2010年9月计算机等级考试试题及答案解析专题
       预告:名师解析2010年9月计算机等级考试试题答案
       2010年9月计算机等级考试成绩查询时间及入口
       2010年9月计算机等考成绩查询短信免费提醒开通
文章搜索
版权声明:如果计算机等级考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本计算机等级考试网内容,请注明出处。