第六章-文件管理(一)(2)

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函数的情况,请读者参阅相关的资料,这里不再进行介绍。

时间: 2024-09-18 07:08:15

第六章-文件管理(一)(2)的相关文章

第六章-文件管理(三)(8)

6.4.8.2 状态条的显示 状态条用于显示当前目录和当前选中文件.它们的值在DirectoryOutline 和FileList的Change事件处理过程中修改. DirectoryOutline和FileList最终的Change事件处理过程如下: procedure TFMForm.DirectoryOutlineChange(Sender: TObject); begin CreateCaption; FileList.clear; FileList.Directory := Direc

第六章-文件管理(三)(2)

6.4.5.2 文件拷贝.移动.删除.更名 文件拷贝的关键是使用了以文件句柄为操作对象的文件管理函数,因而提供了一种底层的I/O通道.在Object Pascal中这一点是利用无类型文件实现的. 在文件拷贝中首先检查目标文件名是否是一个目录.如是则把原文件的文件名添加到目标路径后,生成目标文件全路径名.而后提取源文件的时间戳,以备拷贝完成后设置目标文件.拷贝过程中使用了返回文件句柄或以文件句柄为参数的文件管理函数FileOpen.FileCreate.FileRead.FileWrite.Fil

第六章-文件管理(二)(4)

6.4 文件管理综合举例:文件管理器的实现 在本章的最后,我们利用Delphi提供的文件控件和文件管理函数开发一个简单的文件管理器.虽然这一文件管理器还无法和Windows提供的文件管理器相比拟,但它也为一般的文件操作提供了足够多的功能,而且如果读者感兴趣,还可以对它做进一步的扩充.在后边的拖放操作一章中,我们就为它提供了拖放支持,使它看起来更象一个"文件管理器". 6.4.1 设计基本思路 6.4.1.1 窗口设计 文件管理器的主窗口是一个多文档界面(MDI).有关文件.目录的显示和

第六章-文件管理(二)(2)

6.2.8 结果综合 对不同方法的评估结果,可按一定的公式进行综合.当用户按下"计算"按钮时,系统进行计算并把综合结果写入HazAttr只读编辑框中. 为保证结果显示的正确性,每次增加.修改.删除操作确认后HazAttr编辑框清空. 6.2.9 编辑对话框的输入检查 当用户单击"增加"或"修改"按钮时系统将弹出一个编辑对话框,让用户输入或修改记录内容.其中的三个编辑框,一个组合列表框分别对应TMethod 的四个域.由于TMethod的Resul

第六章-文件管理(一)(1)

6.1 文件类型和标准过程 Delphi同Object Pascal一样支持三种文件类型,即:文本文件.记录文件.无类型文件. 6.1.1文本文件 文本文件类型的变量用如下方法声明: var TextFileVar: Text ; 文本文件是以行为单位进行读.写操作的.由于每一行长度不一定相同,不能计算出给定行在文件中的确切位置,因而只能顺序地读写.而且文本文件只能单独为读或写而打开,在一个打开的文本文件上同时进行读.写操作是不允许的. 6.1.1.1 文本文件的打开.关闭 文本文件的打开需要两

第六章-文件管理(三)(7)

6.4.7.4 改变当前目录 改变当前目录的实现非常简单,只要修改DirectoryOutline的Directory属性.但需注意的是:当改变后目录所在驱动器也发生变化时应相应修改DriveTabSet的当前值.由于驱动器名与DriveTabSet的索引属性TabIndex之间并没有确定的对应关系,因而需要通过一个循环进行查找匹配. Change Directory的菜单事件处理过程是FileChange,即与文件的移动.拷贝.更名共用一个事件处理过程.详细情况请读者参看(6.4.5.3)中的

第六章-文件管理(三)(4)

6.4.6 其它文件管理功能的实现 在子窗口的Function菜单中,定义了一些其它的文件管理功能: ● Search :查找一个给定名字的文件,若存在则显示该文件属性 ● Disk View :显示当前驱动器的大小和剩余空间 ● View type :确定显示文件的类型 6.4.6.1 文件查找 当用户单击Search菜单项时,程序弹出一个对话框(如图6.10),要求输入待查找的文件名和查找路径.文件名可以是通配符.当用户确认后程序显示第一个匹配文件的属性(如图6.9).查找不到匹配文件则给出

第六章-文件管理(三)(1)

2.画出每个自画项目 这在TabSet的OnDrawTab事件处理过程中完成.这一事件处理过程的参数中包含了待画项目索引.画板.待画区域.是否被选中等.这里我们只利用了前三个参数.事实上利用最后一个参数,我们可以对被选中的标签进行一些特殊的视觉效果处理.这一工作就留给读者自己去完成. procedure TFMForm.DriveTabSetDrawTab(Sender: TObject; TabCanvas: TCanvas; R: TRect; Index: Integer; Selecte

第六章-文件管理(二)(5)

6.4.3 文件控件的联系 在本例中我们使用了一组新的控件:TabSet.DirectoryOutline.FileListBox,用于显示和选择驱动器.目录和文件.与(6.3)中所用方法相比,使用这一组控件需要少量的代码支持. TabSet与DirectoryOutline的联系在TabSet的Click事件处理过程中建立: With DriveTabSet do DirectoryOutline.Drive := Tabs[TabIndex][1]; DirectoryOutline与Fil

第六章-文件管理(一)(3)

6.2 记录文件的应用 6.2.1 任务介绍 在这一节,我们开发一个系统安全性综合评估方法管理系统.系统安全性在复杂项目开发中十分重要,但由于牵涉面广因而很难获得客观.全面的评估值.鉴于此我们提出多角度.多侧面评估而后定量集成的思路,并在此基础上提出了多种安全性综合评估方法.每种方法由不同部门进行评估而后把结果汇总.综合. 为此我们定义如下的记录类型: type TNature = (Micro,Macro); {方法性质,分为微观和宏观两类} TMethod = Record Name: st