分享

delphi fileclose和closefile的区别

 windblast 2017-03-20

在 delphi 语言中,FileClose 与 CloseFile 都用于进行关闭文件操作。两者的区别主要有以下几点:

1、两者的应用对象不同

CloseFile 主要用于文本文件、记录类型文件及无类型文件,需要提供一个 File 类型的参数作为目标对象,这个 File 类型是 delphi 自己实现的;

其函数原型定义如下:

FileClose 主要用于二进制流文件,是基于 Windows API的。在 windows 平台中,最常用的是 handle (句柄)的概念,比如:窗口句柄、按钮句柄、文件句柄等等。

其函数原型定义如下:

从使用的角度来看,如果是简单的文本类型或记录类型,使用 CloseFile 系列的函数比较方便,尤其是记录类型的文件读取。

而从兼容性的角度来看,由于 FileClose 使用 handle 为操作对象,其兼容性更强些。

2、使用的方法不同

(1)使用 CloseFile 系列的步骤如下:

首先,是用 AssignFile 将文件变量与一个文件关联起来;

第二步,Reset、ReWrite、Append打开文件;

第三步,用ReadLn/WriteLn/Read/Write等进行文件内容读写操作;

最后,使用CloseFile关闭已打开的文件。

以下是使用 CloseFile 系列函数读取文件的示例代码:

1
2
3
4
5
6
7
8
9
10
11
//读取文件
var
    F :TextFile;//定义文本文件变量
    str : String;
begin
    AssignFile(F, 'c:\test.txt');//将磁盘上的文本文件与变量建立关联
    Reset(F);//打开文件
    Readln(F, str);//读取一行
    ShowMessage('第一行的内容是:' + str);
    CloseFile(F); //关闭文件  
end;

(2) FileClose 需要以 句柄 为操作对象,其步骤大致如下

1、用 FileOpen 函数,用指定方式打开文件;

2、重新定位文件指针,使其从头开始; 

3、进行读取等操作;

4、用 FileClose 关闭文件。  

以下是使用 FileClose 系列函数读取文件的示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
procedure TForm1.btn_ReadClick(Sender: TObject);  
var  
  fend : integer;  
  fOpen : THandle; //文件句柄 
  buffer : PChar;  
  count : integer;  
  i: integer;  
begin  
  fOpen := FileOpen('d:\test.txt',fmOpenReadWrite);//以读写的方式打开文件test.txt  
  if fOpen<> -1 then  
  begin  
    fend := FileSeek(fOpen,0,2);   //将文件指针移动到末尾,为了方便创建数组  
    FileSeek(fOpen,0,0);       //将文件指针重新指定到文件开头,为读写文件作准备  
     buffer := PChar(AllocMem(fend+1));     //为buffer分配内存空间  
     count := FileRead(fOpen,buffer^,fend);  //读取文件内容,返回字符数  
     FileClose(fOpen);        //关闭文件  
     for i:=0 to count-1 do    //遍历内存,取出内容  
     begin  
      ShowMessage(buffer[i]);  
     end;  
     end  
  else  
    ShowMessage('文件不存在!');  
end;

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多