FileOpen() 打开文件
FileClose() 关闭文件
FileRead() 读文件
FileSeek() 文件定位
FileWrite() 写文件
FileCreate() 创建文件
下面就对这些函数作详细介绍。
1. FileOpen()
【原型】:extern PACKAGE int __fastcall FileOpen(const AnsiString FileName, int Mode);
【功能】:打开文件,如果成功返回其句柄,否则返回-1
【参数】:
FileName: 要打开的文件名;
Mode: 打开的方式,取值如下表,可用"或"("|")运算符连接。
fmOpenRead | 0 | 以只读属性打开 |
fmOpenWrite | 1 | 以只写属性打开 |
fmOpenReadWrite | 2 | 以读/写属性打开 |
fmShareCompat | 0 | 兼容FCB方式(汇编中有相应的DOS功能调用,自已查资料) |
fmShareExclusive | 16 | 共享方式:以独占方式打开,在关闭以前,别人不能访问 |
fmShareDenyWrite | 32 | 共享方式:拒绝写访问 |
fmShareDenyRead | 48 | 共享方式:拒绝读访问 |
fmShareDenyNone | 64 | 共享方式:无限制,允许读写 |
例子:
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);
}
}