Delphi 文件操作.docx
- 文档编号:7682577
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:16
- 大小:23.83KB
Delphi 文件操作.docx
《Delphi 文件操作.docx》由会员分享,可在线阅读,更多相关《Delphi 文件操作.docx(16页珍藏版)》请在冰豆网上搜索。
Delphi文件操作
Delphi文件操作
varfile_name:
string;
FileWrite(com.log_fd,PChar(file_name)^,length(file_name));
文件是同一种类型元素的有序集合,是内存与外设之间传输数据的渠道。
文件的本质是一个数据流,所有的文件实际上是一串二进制序列。
文件管理包括:
1、文件操作。
2、目录操作。
3、驱动器操作。
三部分。
1、常见文件操作函数和过程。
1.1、AssignFile过程
作用:
将一个外部文件的文件名与一个File类型的变量关联,并对变量进行初始化。
原型:
procedureAssignFile(varF;FileName:
String);
F:
一个File类型的变量,可以是任何数据类型。
FileName:
外部文件的文件名。
1.2、FileExists函数
作用:
用于测试指定文件名的文件是否存在。
原型:
functionFileExists(constFileName:
String):
Boolean;
FileName:
文件名。
字符串类型。
注意:
如果文件存在,返回True;否则,返回False。
1.3、Append过程
作用:
为在一个已经存在的文件末尾添加文本做好准备工作。
文件是只写方式打开的。
原型:
procedureAppend(varF:
Text);
F:
一个TextFile类型变量。
注意:
这是一个对文本类型文件操作的过程。
其中变量F必须和外部文件关联。
如果F没有与外部文件关联,将抛出异常。
如果F已经处于打开状态,则过程会关闭F并重新打开。
文件指针位置将被设置在文件末尾。
1.4、Reset过程
作用:
对于文本文件,Reset过程将以只读方式打开文件。
对于类型文件和无类型文件,Reset过程将以可读写方式打开文件。
原型:
procedureReset(varF[:
File;RecSize:
Word]);
F:
File类型变量,可以是任何文件类型。
RecSize:
文件的大小。
它是一个可选的选项,只有当F为无类型文件时才可以被指定。
如果F为无类型文件,则RecSize指定了在数据传输过程中使用的记录的大小。
如果参数RecSize被省略了,则默认的记录大小为128字节。
注意:
当该过程打开文件时,如果文件不存在则产生异常。
如果文件已经打开了,则先关闭文件,然后重新打开,并将文件指针放到文件开头处。
默认的文件模式(FileMode)为2,即可读写模式。
如果文件模式在调用Reset过程前都还未改变,则尝试打开一个只读文件会失败。
当调用Reset过程后,如果文件为空,则Eof函数返回True,否则返回False。
1.5、Rewrite过程
作用:
对于一个已存在的文件,此操作将使文件被覆盖。
对于一个不存在的文件,将创建并打开文件。
对于一个已打开的文件,则关闭文件,并重新创建一个新的文件(覆盖原有的)。
文件指针也被设置到空文件的开头处。
原型:
procedureRewrite(varF:
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函数
作用:
用于清空以输出方式打开的文本缓冲区,保证所有写入的字符全部写入外部文件。
原型:
functionFlush(vart:
Text):
Integer;
F:
F是文本类型变量。
注意:
本函数只使用于文本文件的处理。
当操作成功时,Flush返回0,否则,它将返回错误代码。
当使用Rewrite过程或者Append过程打开一个文本文件用来输出时。
Flush函数用于清空文件的缓冲区。
这个过程保证了缓冲区的中的所有字符都已经写入外部文件中。
对于因为输入而打开的文件,Flush函数不起任何作用。
1.7、Read过程
作用:
用于从一个文件中读取数据。
原型:
procedureRead(F,V1[,V2,...,Vn]);
procedureRead([varF:
Text;]V1[,V2,...,Vn]);
F:
是一个文件变量。
V1……Vn:
用于存储从文件中读取的数据。
注意:
在Delphi中,Read过程有两种语法,如果参数F是一个有类型文件,过程Read读取一组数据到一个变量中。
如果参数F是一个文本文件变量,过程Read读取一个或多个值到一个或多个变量中。
1.8、ReadLn过程
作用:
用于从文件中读取一行文本。
原型:
procedureReadLn([varF:
Text;]V1[,V2,...,Vn]);
V:
文本文件变量。
V1……V2:
用于存储读取的文本。
注意:
在Delphi中,ReadLn过程用于读取文本文件的一行文本,并跳至该文本文件的下一行。
1.9、Write过程
作用:
用于向一个文本文件写入数据。
原型:
procedureWrite([varF:
Text;]P1[,P2,...,Pn]); //文本类型文件
procedureWrite(F,V1,…Vn); //有类型文件
F:
文本文件比变量。
P1……Pn:
代表向文件中写入的数据。
注意:
对于文本文件来说,写入的内容应String类型变量。
对于有类型文件来说,写入的必须是某种特定类型的数据。
1.10、WriteLn过程
作用:
用来向文本文件中添加一行内容,即在写入内容后面有回车换行符。
原型:
procedureWriteLn([varF:
Text;]P1[,P2,...,Pn]);
F:
文本文件比变量。
1.11、Eof函数
作用:
用于判断是否到了文件的结尾。
原型:
functionEof(varF):
Boolean; //用于类型文件和无类型文件
functionEof[(varF:
Text)]:
Boolean; //用于文本文件
典型应用:
如果文件为空或当前位置在最后一个字符后,则返回True;否则,返回False。
1.12、Eoln函数
作用:
测试文件指针是否指向一行的最后,适用于文本文件。
如果当前的位置在一行的末尾或Eof(F)函数返回的是True,则Eoln返回的是True;否则返回False。
原型:
functionEoln[(varF:
Text)]:
Boolean;
典型应用:
在程序中对文本文件进行操作时,有时需要限制数据的读取。
如果只读取一行中某个位置到一行结束的部分数据。
程序中可以使用Eoln函数进行判断。
1.13、CloseFile过程
作用:
用来关闭文件,同事将文件记录盘上的文件与相关文件变量断开联系。
原型:
procedureCloseFile(varF);
F:
一个文件类型变量
注意:
通常来说,CloseFile过程与try…finally…模块结合使用。
1.14、DeleteFile函数
作用:
将一个文件从记录盘上删除。
原型:
functionDeleteFile(constFileName:
string):
Boolean;
注意:
如果文件不存在或无法删除,返回False;否则,返回True。
1.15、Erase过程
作用:
用于删除一个已存在的文件。
原型:
procedureErase(varF);
注意:
如果文件被打开,先关闭文件再执行删除操作。
1.16、FileGetAttr函数
作用:
用于获取一个文件的属性设置。
原型:
functionFileGetAttr(constFileName:
string):
Integer;
注意:
具体返回值代码参考帮助。
下面我们来总结一下Delphi中文件操作流程。
Delphi中把文件分为3种:
文本文件、类型文件和无类型文件。
文本文件指可以被任意文件编辑器读取的ASCII文件。
类型文件包含由程序员定义的数据类型的文件。
无类型文件包含了其他所有的文件类型。
1、文本文件
Step1调用AssignFile()将文件变量与一个关联起来。
如:
AssignFile(MyTextFile,’TextFile.txt’);
Step2打开文件。
有三种打开文件的方式:
1.Rewrite过程创建并打开文件,对于一个已经存在的文件,此操作将使文件被覆盖;2.使用Reset过程只读地打开一个文件;3.使用Append过程向已经存在的文本文件追加文本。
Step3对文件进行操作。
如Write或Read操作。
Step4使用CloseFile来关闭一个已经打开的文件。
下面是一个文本文件操作的示例。
例1:
复制内容到剪贴板
代码:
procedureTForm1.Button1Click(Sender:
TObject);
var
MyTextFile:
TextFile; //定义变量MyTextFile为文本文件类型
begin
(*步骤1,将文件变量与外部文件联系。
相当于为外部文件找了个“替身”*)
AssignFile(MyTextFile,‘TextFile.txt’);
(*判断操作的文件是否存在,不存在则创建文件。
*)
ifFileExists(‘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、类型文件
Step1定义数据结构
Step2调用AssignFile()将文件变量与一个类型文件关联起来。
Step3打开类型文件。
Step4对类型文件进行操作。
Step5关闭已经打开的文件。
下面例子演示了类型文件的操作。
例2:
复制内容到剪贴板
代码:
(*步骤1,定义数据结构。
*)
type
TPerson=record
Name:
string[20];
Sex:
string[4]
Age:
Integer;
End;
procedureTForm1.Button1Click(Sender:
TObject);
var
PersonFile:
fileofTPerson; //声明PersonFile变量为TPerson类型文件
Person:
TPerson;
begin
(*步骤2,关联文件。
*)
AssignFile(PersonFile,‘Person.dat’);
(*步骤3,打开文件。
*)
Reset(PersonFile);
try
WhilenotEof(PersonFile)do
(*步骤4,对文件进行操作。
*)
begin
Read(PersonFile,Person);
end;
finally
(*步骤5,关闭文件。
*)
CloseFile(PersonFile);
end;
end;
=====================================================================
Delphi中默认有input和output两个文件变量,使用可以不用定义,直接使用.
但:
input:
只读
output:
只写
用时注意以免引起异常.
文件是由文件名标识的一组数据的集合,文件通常存放在磁盘上。
源程序、学生档案记录、图形、音乐等均可以作为文件存储在磁盘上。
操作系统是以文件为单位对数据进行管理的,也就是说,如果想读取外存介质上的数据,必须先按文件名找到所指定的文件,然后再从该文件中读取数据。
要向外存介质上存储数据,也必须先建立一个文件(以文件名标识),才能向它输出数据。
在程序运行时,常常需要将一些数据(运行的最终结果或中间数据)输出到磁盘上,以后需要时再从磁盘中输入到计算机内存。
这就要用到磁盘文件。
1.文件类型
file是一个文件类型说明符,通过file可以定义文件变量,也可以定义一些新的类型。
在Delphi中支持下面3种类型的文件:
即文本文件、类型文件和无类型文件(也称二进制文件)。
下面依次介绍3种文件类型变量的定义及使用方法。
Delphi程序设计中,对任何一种文件的操作都可以归纳为:
建立_打开_读/写_关闭。
2.文本文件
2.1文本文件的概念
在Delphi中定义了TextFile类型表示文本文件,由字符的ASCII码组成,最小存取单位为字符。
文本文件也称为ASCII码文件。
利用常见的文字编辑器可以浏览支件内容。
文本文件是以行为单位进行读、写操作的。
由于每一行长度不一定相同,不能计算出给定行在文件中的确切位置,因而只能顺序地读写。
在一个打开的文本文件上同时进行读、写操作是不允许的。
2.2文本文件变量的定义
定义文件变量的语法格式如下:
var<文件变量名>:
TextFile;
例如,VarmyTextFile:
TextFile;就定义了一个文本文件变量myTextFile,下面就可以通过此变量引用一个文本文件。
2.3文本文件的使用
(1)文件变量与文件关联
在使用文件变量进行文件操作之前,需要将文件变量与要操作的文件关联,即给文件变量名赋值。
文件变量赋值可以使用过程AssignFile,过程的说明语法格式如下:
procedureAssignFile(VarF;FileName:
string);
其中,F为文件变量名,定义为无类型参数是为了和所有文件类型兼容;FileName是文件名字符串,是包括路径的文件全称名。
例如,AssignFile(F,'e:
\delphi\program\extl.txt’);就将文件变量F和指定的文件e:
\delphi\program\extl.txt关联起来。
后面所有对变量f的操作都是对指定文件的操作。
(2)使用文件变量打开文件
使用不同的过程打开文件,有3种方式:
procedureRewrite(varF~File[;recsize:
word]);
这个过程创建并打开文件,可以对文件进行写。
这里的F是一个已经和指定文件名关联的文件变量。
对于一个已存在的文件,此操作将覆盖原文件;如果文件不存在,将建立一个新的空文件。
若是类型文件(下一小节介绍),可用recsize指定大小。
·
procedureReset(varF:
File[;RecSize:
Word]);
使用Reset过程以读的方式打开一个文件,此时只能从文件中读取数据。
f为文件变量,打开文件后,文件指针指向文件开头。
如果试图用reset过程打开一个不存在的文件时,将有I/O错误产生。
procedure.Append(varF:
’Fext);
使用Append过程向已存在的文件追加文本,这个过程仅用于文本文件。
当用append过程打开文件时,文件指针指向文件的尾部,此后输入的数据将添加在文件原有数据的后面。
该过程打开的文件(即F关联的文件)必须存在,否则也将出现I/O错误。
(3)读/写文件
①读取文件内容。
在以读的方式打开文件后,可以使用read和readln语句来读取文件内容,其声明代码格式分别为:
procedureread([varF:
’Fext;]V1[,V2,…,Vn]);
procedurereadln([varF:
’text;]v1[,V2,···,Vn]);
其中,F为文件变量。
v1、v2、…、vn等为需要输入的变量,其类型可以为字符串、字符、整数和实数类型。
read和readln的区别为后者在读取数据后,将文件指针移至下一行,上次读取的数据与回车符之间的数据被忽略。
当读取字符串时,必须用readln过程,否则读完一行数据后,再使用read读取字符串将得到空串。
当读取整型和实型数据时,文件中的数据用空格分隔,且必须符合数据格式,否则将产生I/O错误。
在读取文件时,还必须判断文件指针是否已到文件尾部,此时可以用Eof函数进行判断,其声明代码如下:
functionEof[(‘varF:
’rext)]:
Boolean;
当文件指针指到尾部时,该函数返回值为true。
②向文件写入数据。
以写的方式打开文件后,即可向其中写入数据,写人数据使用write和writeln过程,其声明代码如下:
procedurewri‘teln([varF:
’rext;]p1[,p2,…,pn]);
procedurewrite([varF:
‘rext;]p1[,p2,‘·‘,pn]);
与read相似,p1、p2、…、pn等为需要输出的变量,可以是字符串、字符、整数和实数类型。
一writeln在写入数据后还会附加上回车和换行符,而下次要写入的数据将写在新的一行。
写人数据时系统自动将数据转化为字符串形式,1)~ASCII码的形式保存在文件中。
(4)使用文件变量关闭文件
无论是输入或输出,在对文件操作完成后,都应关闭文件。
关闭文件使用CloseFile过程,其声明代码如下:
procedureCloseFile(varF);
关闭文件后,系统释放打开文件时使用的资源。
特别是写文件时,在调用write和writeln过程时,数据先写入内存缓冲区,只有在缓冲区满或关闭文件时,才把数据真正写入磁盘文件中,因此写完数据后不关闭文件可能丢失数据。
例2.15使用Rewrite()过程在程序运行的当前目录下创建一个文本文件file.txt,并向文件中增加5行文本。
Var
textf:
TextFile; //定义文件变量textf
S:
String;
i:
Integer;
1 ‘
begin ‘
AssignFile(textf,’file.txt’);//将文件变量textf与当前目录中的“file.txt"文件关联
Rewrite(textf); //创建文件或打开已存在的文件进行覆盖
fori:
=1to5do
1 ●
begin
S:
=’ThisisLine#’;
writeln(textf,s,i);
end;
CloseFile(textf); //关闭已打开的文件textf
end.
被创建的文件中包含5行文本,如第3行为:
Thisisline#3。
若要向一个已存在的文件追加新文本,应将其中的rewrite改为append。
以上程序是向文件中写入字符串和整数。
其实,ObjectPascal对于所有的数据类型都可以这样处理。
下面的程序演示了从文本文件中读取数据的方法。
写入文件
Var
F:
Textfile;//申明变量
Begin
AssignFile(F,'c:
\ek.txt');//让变量F和C:
\ek.txt关连
ReWrite(F);{Createanewfilenamedek.txt}
Writeln(F,'你要写入文本文件的内容');//写入文件
Closefile(F);//释放变量F
End;
读取文件
Var
F:
Textfile;
str:
String;
Begin
AssignFile(F,'c:
\ek.txt'); {AssignstheFilename}
Reset(F); {Opensthefileforreading}
Readln(F,str);
ShowMessage('1.lineoftextfile:
'+str);
Closefile(F); {ClosesfileF}
End;
2007/07/26/1710410.aspx
varf:
text;
...
AssignFile(f,'c:
\1.txt');
ReWrite(f);
Writeln(f,'Thisisatest');
CloseFile(f);
...
其中Rewrite是新建文件,若换成Reset则为打开文件
Writeln为行写入并换行,Write为写入不换行,Readln为读一行并换行,Read为读但不换行
delphi读写文件方法有很多种:
我送你一贴:
程序设计当中我们时常遇到需要处理文件、目录及驱动器的情况,本章将对如何处理不同类型的文件进行讲述。
本章包括如何使用TFileStream类封装文件的输入/输出以及如何利用32位Windows的主要特征—内存映射文件。
你将学习到如何创建一个封装了内存映射文件功能的TMemoryMappedFile类,并用它在文本文件中进行文本查询。
本章还提供了一些关于选择驱动器、在树型目录中查询文件及获取文件版本信息的方法。
本章将使你对文件、目录
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Delphi 文件操作 文件 操作