C++ Builder 的文件读写操作总结

来源:互联网 发布:js根据id隐藏div 编辑:程序博客网 时间:2024/05/01 04:42
       这类函数完成对文件的读写相关的操作,这种类型的操作和C的基于I/O文件操作类似,下表列出这类操作常用的函数及其功能。

  FileOpen() 打开文件

  FileClose() 关闭文件

  FileRead() 读文件

  FileSeek() 文件定位  

  FileWrite() 写文件

  FileCreate() 创建文件

     下面就对这些函数作详细介绍。

1. FileOpen() 

【原型】:extern PACKAGE int __fastcall FileOpen(const AnsiString FileName, int Mode);

【功能】:打开文件,如果成功返回其句柄,否则返回-1

【参数】:

                 FileName: 要打开的文件名;

                 Mode:     打开的方式,取值如下表,可用"或"("|")运算符连接。

fmOpenRead0
以只读属性打开fmOpenWrite1
以只写属性打开fmOpenReadWrite2
以读/写属性打开fmShareCompat0
兼容FCB方式(汇编中有相应的DOS功能调用,自已查资料)fmShareExclusive16共享方式:以独占方式打开,在关闭以前,别人不能访问fmShareDenyWrite32
共享方式:拒绝写访问fmShareDenyRead48
共享方式:拒绝读访问fmShareDenyNone64
共享方式:无限制,允许读写

  例子:

int iHandle = FileOpen("C:\\WINDOWS\\Win.ini", fmOpenReadWrite|fmShareExclusive);

      通过【打开对话框】获取打开的文件名:

     1.添加OpenDialog控件,头文件中自动添加:

TOpenDialog *OpenDialog1;
      2. .cpp文件中

int iHandle;  if(OpenDialog1->Execute())  {    iHandle = FileOpen(OpenDialog1->FileName, fmOpenReadWrite|fmShareExclusive);  }


2. FileClose()

原型】:extern PACKAGE void __fastcall FileClose(int Handle);

【功能】:关闭打开的句柄。

【参数】:Handle: 要关闭的句柄

  例子:

FileClose(iHandle);
3. FileRead()

【原型】:extern PACKAGE int __fastcall FileRead(int Handle, void *Buffer, int Count);

【功能】:读文件,返回实际读取的字节数,句柄必须首先由FileOpen或FileCreate创建。

【参数】:Handle: 要读取的句柄;

                  Buffer:  存放读取的数据的缓冲区;

                  Count:   想读取的字节数

  例子:

char str[400];FileRead(iHandle,str,400);

4. FileSeek()

【原型】:extern PACKAGE int __fastcall FileSeek(int Handle, int Offset, int Origin);

【功能】:移动文件读取指针,成功返回文件指针的位置,失败返回-1

【参数】:Handle:相关联的句柄;

                  Offset:移动的量;

                  Orgin:移动的基准,0=文件头,1=当前位置,2=文件尾。

  例子:

ShowMessage( FileSeek(iHandle, 0, 2) ); //取得文件的长度

5. FileWrite()

【原型】:extern PACKAGE int __fastcall FileWrite(int Handle, const void *Buffer, int Count);

【功能】:写文件,返回实际写入的字节数,句柄必须首先由FileOpen或FileCreate创建。

【参数】:Handle:要写入的句柄;

                  Buffer:存放写入数据的缓冲区;

                  Count:想写入的字节数

  例子:

char str[]="I Love You";FileWrite(iHandle, str, strlen(str));

6. FileCreate()

【原型】:extern PACKAGE int __fastcall FileCreate(const AnsiString FileName);

【功能】:创建文件。成功返回其句柄,否则返回-1

【参数】:FileName:要创建的文件名

  例子:

if( !FileExists("KC.C") ){  int iHandle = FileCreate("KC.C");}

以下是一个完整的例子:

【功能】:对话框程序,点击一个Button,弹出【打开文件】对话框,选择一个文本文件,将文本文件内容显示在文本框内。

【实现】:对话框中添加:Button,OpenDialog组件,添加文本框,双击Button,添加以下代码:

  int iFileHandle;  int iFileLength;  int iBytesRead;  char *pszBuffer;  if (OpenDialog1->Execute())  {    try    {      iFileHandle = FileOpen(OpenDialog1->FileName, fmOpenRead);      iFileLength = FileSeek(iFileHandle,0,2);      FileSeek(iFileHandle,0,0);      pszBuffer = new char[iFileLength+1];      iBytesRead = FileRead(iFileHandle, pszBuffer, iFileLength);      FileClose(iFileHandle);      this->Memo1->Text=pszBuffer;      delete [] pszBuffer;    }    catch(...)    {      Application->MessageBox("Can't perform one of the  file read operation", "Alert", IDOK);    }   }









1 0
原创粉丝点击