Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 软件时空 > 软件相关 > Delphi文件的打开与关闭
【标  题】:Delphi文件的打开与关闭
【关键字】:Delphi
【来  源】:http://blog.chinaunix.net/article.php?articleId=23852&blogId=484

Delphi文件的打开与关闭

Your Ad Here 文件的打开与关闭 

AssignFile :把一个外部文件名和一个文件变量相关联

Reset :打开一个存在的文件

Rewrite :创建并打开一个新文件(或覆盖原有文件)

Append :以添加方式打开一个文件(只适用于文本文件)

CloseFile : 关闭一个打开的文件

FileOpen :打开一个特定的文件并返回文件句柄

FileCreate :创建一个给定文件名的文件并返回文件句柄

FileClose :关闭一个特定句柄的文件 

       后边三个文件主要供系统内部使用,在文件复制的编程中也往往会用到。它们操作的对象是文件句柄而不是文件变量。 

   Delphi的旧文件类型使用AssignFile,使文件变量和物理文件关联,通过Delphi定义的
对文件变量的各种操作,完成文件的存取和操作.使用方便.以下提供对文件变量类
型的操作代码描述:
var

  F: TextFile;
  S: string;
begin
  if OpenDialog1.Execute then          { Display Open dialog box }
  begin
    AssignFile(F, OpenDialog1.FileName);   { File selected in dialog box }
    Reset(F);
    Readln(F, S);                          { Read the first line out of the file }
    Edit1.Text := S;                       { Put string in a TEdit control }
    CloseFile(F);
  end;
end;

      文件流是流(stream classes)的子类,所以使用他的一个优点就是能自动继承其父类的属性他能很容易的和其他的流类互操作,比如你如果想把一块动态内存块写入磁盘,可以使用一个TFileStream和一个TMemoryStream来完成.



备注:

Delphi中用于读写(I/O)的三种文件类型

一.旧pascal文件类型
    用旧文件变量表示的文件类型,比如 F:text,F:File. 定义了三类:有类型,无类型,字符类型以及一些Delphi的文件操作函数.比如:AssignPrn,Writeln,这些文件类和Windows文件句柄不兼容

二.Windows文件句柄(handle)
    面向对象的Pascal的文件句柄封装了Windows文件句柄类型,文件操作函数库则封装了Windows API函数,比如"Fileread"就是调用了Windows API 函数"ReadFile",Delphi提供了一个Windows API操作接口如果熟悉Windows API,可以用Windows文件句进行文件操作.

三.文件流(File Streams)
    文件流是TFileStream类的对象实例,文件流是高层的文件操作类型,TFileStream提供了一个句柄属性.用此属性可操作Windows文件句柄类型.

如何选择文件类型

      Windows文件句柄是较底层的文件操作类型,提供了灵活的同步及异步文件读写控制,以下提供用Windows文件句柄类型对文件同步及异步操作的伪代码描述:
同步操作:
bResult = ReadFile(hFile, &inBuffer, nBytesToRead, &nBytesRead, NULL) ;
// check for eof
if (bResult &&  nBytesRead == 0, ) {
 // we're at the end of the file
 }

异步操作:
// set up overlapped structure fields 
gOverLapped.Offset     = 0;
gOverLapped.OffsetHigh = 0;
gOverLapped.hEvent     = NULL;
 
// attempt an asynchronous read operation
bResult = ReadFile(hFile, &inBuffer, nBytesToRead, &nBytesRead,
    &gOverlapped) ;
 
// if there was a problem, or the async. operation's still pending ...
if (!bResult)
{
    // deal with the error code
    switch (dwError = GetLastError())

    {
        case ERROR_HANDLE_EOF:
        {
            // we're reached the end of the file
            // during the call to ReadFile
 
            // code to handle that
        }
 
        case ERROR_IO_PENDING:
        {
            // asynchronous i/o is still in progress
 
            // do something else for a while
            GoDoSomethingElse() ;
 
            // check on the results of the asynchronous read
            bResult = GetOverlappedResult(hFile, &gOverlapped,

                &nBytesRead, FALSE) ;
 
            // if there was a problem ...
            if (!bResult)
            {
                // deal with the error code
                switch (dwError = GetLastError())
                {
                    case ERROR_HANDLE_EOF:
                    {
                        // we're reached the end of the file
                        file  during asynchronous operation
                    }
 
                    // deal with other error cases

                }
            }
        } // end case
 
        // deal with other error cases
 
    } // end switch
} // end if
 
虽然Windows文件句柄提供灵活的文件控制,但须编写更多的出错处理代码,如果对
WindowsAPI不熟悉,使用Delphi推荐的旧文件变量类型.



Delphi常见错误中英文对照:【上一篇】
vmWare 减少虚拟机的内存:【下一篇】
【相关文章】
  • Delphi常见错误中英文对照
  • Delphi的文件管理<1>
  • Delphi的文件管理<2>
  • Delphi的文件管理<3>
  • 一个delphi常用函数中文说
  • delphi实现应用程序的文件拖放功能
  • Floating Palette for Delphi 7
  • MSDN Lookup expert for Delphi
  • Delphi & C++Builder IDE Palette Menu
  • Delphi2005免安装精简版
  • 【随机文章】
  • Flash表单制作实例集锦(七)
  • 今天又改了CRACKME
  • Xml 的几种调用方法
  • 小端(Little Endian) 大端(Big Endian)
  • 管理制度与做人之道!
  • "过时"的无脚本网页木马
  • PHP安全编程之加密功能
  • [IP地址计算器]z
  • Sunny:tpoint2.h
  • Snort入侵检测系统安装与配置
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.