分享
 
 
 

Delphi例程-文件管理例程(1~15)

王朝delphi·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

1.AssignFile 过程

关联一个外部文件名到一个文件变量上。

单元

System

语法

procedure AssignFile(var F; FileName: string);

描述

调用AssignFile来初始化Delphi代码中的文件变量。F是一个任何文件类型的文件变量。FileName是一个字符串类型的表达式,或者,如果扩展的语法激活的话,是PChar类型的表达式。

调用AssignFile之后,F就和外部文件关联起来直到F被关闭。所有在文件变量F上的更多的操作都会操作在名为Filename的外部文件上。

当FileName参数为空时,AssignFile会将F和标准输入或标准输出文件关联起来。如果赋予一个空名字,在调用了Reset(F)之后,F将引用标准输入文件,而在调用了Rewrite(F)之后,F将引用标准输出文件。

不要在已经打开的文件变量上使用AssignFile。

注意:为了避免范围冲突,AssignFile 代替了在早期版本的Delphi产品中可用的Assign过程。然而为了向后兼容Assign仍然是可用的。

示例

var

F: TextFile;

S: string;

begin

if OpenDialog1.Execute then { Display Open dialog box }

begin

AssignFile(F, OpenDialog1.FileName); { File selected in dialog }

Reset(F);

Readln(F, S); { Read first line of file }

Edit1.Text := S; { Put string in a TEdit control }

CloseFile(F);

end;

end;

2.ChDir 过程

改变当前目录

单元

System

语法

procedure ChDir(const S: string); overload;

procedure ChDir(P: PChar); overload;

描述

ChDir 会将当前目录改变为由S或P指定的路径。如果这个操作失败,异常EInOutError将会引发。

在Windows上,路径可以包含驱动器指示符(drive specifier),而这将导致当前的驱动盘同时改变。

注意:在Delphi中,{$I+} 使用异常来处理运行时错误。当使用{$I-}时,要使用IOResult来检查I/O错误。

示例

begin

{$I-}

{ Change to directory specified in Edit1 }

ChDir(Edit1.Text);

if IOResult <> 0 then

MessageDlg('Cannot find directory', mtWarning, [mbOk], 0);

end;

3.CloseFile 过程

终止文件变量和外部磁盘文件之间的关联

单元

System

语法

procedure CloseFile(var F);

描述

由于命名冲突,CloseFile代替了Close过程。使用CloseFile过程而不是Close来终止文件变量和外部磁盘文件之间的关联。

F是一个使用Reset,Rewrite或Append打开的任何文件类型的文件变量。和F关联的外部文件会完全地更新然后关闭并释放文件句柄便于重用。

注意:{$I+} 使用异常来处理运行时错误。当使用{$I-}时,要使用IOResult检查I/O 错误。

4.CreateDir 函数

创建一个新目录

单元

SysUtils

语法

function CreateDir(const Dir: string): Boolean;

描述

CreateDir 创建一个新目录。如果新目录成功创建,则返回值为true,或者如果出现错误则返回值为false。

示例

下面的例子会创建目录'C:\temp',如果目录不存在的话。

uses FileCtrl;

procedure TForm1.Button1Click(Sender: TObject);

begin

if not DirectoryExists('c:\temp') then

if not CreateDir('C:\temp') then

raise Exception.Create('Cannot create c:\temp');

end;

5.DeleteFile 函数

从删除一个磁盘文件

单元

SysUtils

语法

function DeleteFile(const FileName: string): Boolean;

描述

DeleteFile 删除磁盘上由 FileName 命名的文件。如果文件不能被删除或者文件不存在,函数将返回false。

示例

if FileExists(FileName) then

if MessageDlg('Do you really want to delete ' + ExtractFileName(FileName) + '?'), mtConfirmation, [mbYes, mbNo], 0, mbNo) = IDYes then

DeleteFile(FileName);

6.DirectoryExists 函数

确定指定的目录是否存在

单元

SysUtils

语法

function DirectoryExists(const Directory: string): Boolean;

描述

调用 DirectoryExists 来确定由Directory参数指定的目录是否存在。如果目录存在,函数返回true。如果目录不存在,函数返回false。

如果输入的是全称路径名(full path name),DirectoryExists 会沿着指定的路径查找目录。否则Directory参数会被认为是当前目录的相对路径。

FileCtrl 单元(仅用于Windows) 同样包含一个 DirectoryExists 函数。然而,FileCtrl 版本是不赞成的,SysUtils 版本是首选的,即使代码不需要跨平台(However, the FileCtrl version is deprecated, and the SysUtils version preferred, even if the code does not need to be cross-platform)。

7.DiskFree 函数

返回指定盘符上空闲的字节数

单元

SysUtils

语法

function DiskFree(Drive: Byte): Int64;

描述

DiskFree 返回指定驱动盘()的空闲字节数,其中 0 = 当前盘, 1 = A, 2 = B,等等。如果驱动盘数字无效,DiskFree 返回-1。

注意:DiskFree 仅在Windows上可用。

示例

var

S: string;

AmtFree: Int64;

Total: Int64;

begin

AmtFree := DiskFree(0);

Total := DiskSize(0);

S := IntToStr(AmtFree div Total) + 'percent of the space on drive 0 is free: ' (AmtFree div 1024) + ' Kbytes free. ';

Label1.Caption := S;

end;

8.DiskSize 函数

返回指定盘符的字节大小

单元

SysUtils

语法

function DiskSize(Drive: Byte): Int64;

描述

DiskSize 返回指定驱动盘的字节大小,其中 0 = 当前盘,1 = A, 2 = B, 等等。如果驱动盘数字无效,DiskSize返回-1。

注意:DiskSize 仅在Windows上可用。

9.文件模式常量(File mode constants)

文件模式常量用于打开和关闭磁盘文件

单元

System

语法

const fmClosed = $D7B0; // closed file

const fmInput = $D7B1; // reset file (TTextRec)

const fmOutput = $D7B2; // rewritten file (TTextRec)

const fmInOut = $D7B3; // reset or rewritten file (TFileRec)

const fmCRLF = $8 // DOS-style EoL and EoF markers (TTextRec)

const fmMask = $D7B3; // mask out fmCRLF flag (TTextRec)

描述 当打开和关闭磁盘文件时,使用文件模式常量。这些常量主要用在这样的Delphi代码中,TFileRec和TTextRec的Mode字段包含这些值中的某个值(These constants are used primarily in Delphi code, where the Mode field of TFileRec and TTextRec contain one of these values.)。

10.文件名称常量(File name constants)

文件名称常量用于以平台中立的方式表达文件名称。

单元

SysUtils

语法

const

PathDelim = {$IFDEF MSWINDOWS} '\'; {$ELSE} '/'; {$ENDIF}

DriveDelim = {$IFDEF MSWINDOWS} ':'; {$ELSE} ''; {$ENDIF}

PathSep = {$IFDEF MSWINDOWS} ';'; {$ELSE} ':'; {$ENDIF}

描述

文件名称常量指定了在Windows和Linux中不同的的定界符和分隔符(delimiter and separator)。

11.文件打开模式常量(File open mode constants)

打开打开模式常量用于控制对文件或流的访问模式。

单元

SysUtils

语法

On Windows:

const

fmCreate = $FFFF;

fmOpenRead = $0000;

fmOpenWrite = $0001;

fmOpenReadWrite = $0002;

fmShareCompat = $0000 platform;

fmShareExclusive = $0010;

fmShareDenyWrite = $0020;

fmShareDenyRead = $0030 platform;

fmShareDenyNone = $0040;

On Linux:

const

fmOpenRead = O_RDONLY;

fmOpenWrite = O_WRONLY;

fmOpenReadWrite = O_RDWR;

fmShareExclusive = $0010;

fmShareDenyWrite = $0020;

fmShareDenyNone = $0030;

描述

当文件或流被打开时,文件打开模式常量用于控制文件或流能够如何共享。

TFileStream构造函数有一个Mode参数,你能够设置为这些常量中的一个:

Constant Definition

fmCreate 如果文件存在,那么将打开用于写访问,否则会创建新文件。其他的常量都声明在 SysUtils 单元,而这个常量声明在 Classes 单元中

fmOpenRead 仅以读访问方式打开

fmOpenWrite 仅以写访问方式打开

fmOpenReadWrite 以读写访问方式打开

fmShareCompat 和FCB打开的方法兼容。不要在跨平台应用程序中使用这个模式

fmShareExclusive 读写访问被拒绝

fmShareDenyWrite 写访问被拒绝

fmShareDenyRead 读访问被拒绝。不要在跨平台应用程序中使用这个模式

fmShareDenyNone 允许其他代码进行完全的访问

12.FileAccessRights 变量

当应用程序被调用时指向特殊的命令行参数。

单元

System

语法

var FileAccessRights: Integer platform;

描述

在 Windows 中,FileAccessRights 变量被忽略。

在 Linux 中,每个文件都有一组许可位(permission bits)控制着对文件的访问。当创建新文件时,FileAccessRights 指定了一组默认的许可标记来使用。当你没有显式指定要使用的许可位时,FileCreate 方法使用 FileAccessRights 来设置它创建的文件的访问权力。

13.FileAge 函数

返回文件的OS时间戳(Returns the OS timestamp of a file.)

单元

SysUtils

语法

function FileAge(const FileName: string): Integer;

描述

调用 FileAge 来获得由 FileNameto 指定的文件的 OS 时间戳。返回值可以使用 FileDateToDateTime函数转换为TDateTime对象。如果文件不存在返回值为 -1。

在Linux中,-1 是一个有效的时间戳。可使用 FileExists 核实文件不存在。

示例

下面的代码将一个文件的属性读入一组变量中,并在文件属性对话框中设置检查框以表现当前的属性,然后执行对话框。如果用户改变并接受对话框的设置,代码将设置文件属性以匹配改变的设置:

procedure TFMForm.Properties1Click(Sender: TObject);

var

Attributes, NewAttributes: Word;

begin

with FileAttrForm do

begin

FileDirName.Caption := FileList.Items[FileList.ItemIndex];

{ set box caption }

PathName.Caption := FileList.Directory;

{ show directory name }

ChangeDate.Caption :=

DateTimeToStr(FileDateToDateTime(FileAge(FileList.FileName)));

Attributes := FileGetAttr(FileDirName.Caption);

{ read file attributes }

ReadOnly.Checked := (Attributes and SysUtils.faReadOnly) = faReadOnly;

Archive.Checked := (Attributes and faArchive) = faArchive;

System.Checked := (Attributes and faSysFile) = faSysFile;

Hidden.Checked := (Attributes and faHidden) = faHidden;

if ShowModal <> id_Cancel then { execute dialog box }

begin

NewAttributes := Attributes;

{ start with original attributes }

if ReadOnly.Checked then

NewAttributes := NewAttributes or SysUtils.faReadOnly

else

NewAttributes := NewAttributes and not SysUtils.faReadOnly;

if Archive.Checked then

NewAttributes := NewAttributes or faArchive

else

NewAttributes := NewAttributes and not faArchive;

if System.Checked then

NewAttributes := NewAttributes or faSysFile

else

NewAttributes := NewAttributes and not faSysFile;

if Hidden.Checked then

NewAttributes := NewAttributes or faHidden

else

NewAttributes := NewAttributes and not faHidden;

if NewAttributes <> Attributes then { if anything changed... }

FileSetAttr(FileDirName.Caption, NewAttributes);

{ ...write the new values }

end;

end;

end;

14.FileClose 过程

关闭指定的文件

单元

SysUtils

语法

procedure FileClose(Handle: Integer);

描述

FileClose 关闭给定文件句柄的文件。句柄在文件使用FileOpen或FileCreate打开时获得。

当和Delphi语言的文件变量一起使用时,应使用 CloseFile 过程代替。

示例

下面的例子使用了一个按钮,一个字符串栅格和一个保存对话框在窗体上。单击按钮后,用户将被提示输入文件名。当用户单OK后,字符串栅格的内容将被写到指定的文件中。附加的信息同样被写到文件中,以便文件能够使用FileRead函数容易地读取。

procedure TForm1.Button1Click(Sender: TObject);

var

BackupName: string;

FileHandle: Integer;

StringLen: Integer;

X: Integer;

Y: Integer;

begin

if SaveDialog1.Execute then

begin

if FileExists(SaveDialog1.FileName) then

begin

BackupName := ExtractFileName(SaveDialog1.FileName);

BackupName := ChangeFileExt(BackupName, '.BAK');

if not RenameFile(SaveDialog1.FileName, BackupName) then

raise Exception.Create('Unable to create backup file.');

end;

FileHandle := FileCreate(SaveDialog1.FileName);

{ Write out the number of rows and columns in the grid. }

FileWrite(FileHandle,

StringGrid1.ColCount, SizeOf(StringGrid1.ColCount));

FileWrite(FileHandle,

StringGrid1.RowCount, SizeOf(StringGrid1.RowCount));

for X := 0 to StringGrid1.ColCount - 1 do

begin

for Y := 0 to StringGrid1.RowCount - 1 do

begin

{ Write out the length of each string, followed by the string itself. }

StringLen := Length(StringGrid1.Cells[X,Y]);

FileWrite(FileHandle, StringLen, SizeOf(StringLen));

FileWrite(FileHandle,

StringGrid1.Cells[X,Y], Length(StringGrid1.Cells[X,Y]);

end;

end;

FileClose(FileHandle);

end;

end;

15.FileCreate 函数

创建一个新文件

单元

SysUtils

语法

function FileCreate(const FileName: string): Integer; overload;

function FileCreate(const FileName: string; Rights: Integer): Integer; overload;

描述

FileCreate 用指定的名称创建新文件。如果返回值是正数,说明函数成功而且值是新文件的句柄。返回值是-1说明有错误发生。

在 Windows中,FileAccessRights 变量和 Rights 参数被忽略。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有