Delphi7文件操作常用函数一

1. AssignFile、Erase

AssignFile

procedure AssignFile(var F; FileName: string);:给文件变量连接一个外部文件名。这里需要注意的是AssignFile不能用在已打开的文件上。

procedure TForm1.Button1Click(Sender: TObject);
var
    text : String;
    F1 : TextFile;
begin
   Try
      AssignFile(F1,Trim(Edit1.Text));  //变量与外部文件名关联
      Append(F1);    
      text := Memo1.Text;
      write(f1,text);
      CloseFile(f1);                   //终止变量与外部文件的关联
   Except
      ShowMessage('写入失败');
   End;
end;

 Erase

procedure Erase(var F);:删除一个外部文件。

AssignFile(MyFile,'d:\dd.txt');
Erase(MyFile);  //必须关闭一个文件后才可以删除它


 

2.ChDir

procedure ChDir(const S: string); overload;

procedure ChDir(P: PChar); overload;

将当前目录修改为指定目录。其中S、P表示指定修改的目录。

 

3.CloseFile

procedure CloseFile(var F);:终止一个文件变量与一个外部磁盘文件的关联。其中,F表示指定关闭的文件变量。

 

4. CreateDir

function CreateDir(const Dir: string): Boolean;:创建一个新的目录。如果返回值为true,则表示目录创建成功;否则返回失败。

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not DirectoryExists('c:\temp') then  //判断目录是否存在
    if not CreateDir('C:\temp') then      //判断目录是否可以新创建
    raise Exception.Create('Cannot create c:\temp');
end;


5. DeleteFile、FileClose、FileCreate、FileExists、FileGetAttr、FileOpen、FileSearch

DeleteFile

function DeleteFile(const FileName: string): Boolean;:从磁盘中删除一个指定的文件。如果返回true,则表示文件删除成功;否则删除失败。

FileClose

procedure FileClose(Handle: Integer);:用来关闭一个指定的文件。

FileCreate

function FileCreate(const FileName: string): Integer; overload;

function FileCreate(const FileName: string; Rights: Integer): Integer; overload;

用于创建一个文件。其中第二个函数中的Rights用于设置文件许可,主要用于Linux系统。如果返回值为-1,则表示文件创建失败;否则表示文件创建成功。该返回值作为FileClose的参数。

FileExists

function FileExists(const FileName: string): Boolean;:测试指定的文件是否存在。如果存在,则返回true;否则返回false。

FileGetAttr

function FileGetAttr(const FileName: string): Integer;:返回文件的属性。如果返回值为1,则文件是只读的(faReadOnly);如果为2,则文件是隐藏文件(faHidden);

FileOpen

function FileOpen(const FileName: string; Mode: LongWord): Integer;:用指定的访问方式打开一个指定的文件。其中Mode为文件访问方式(只读(mOpenRead)、只写(fmOpenWrite)、读写(fmOpenReadWrite))。如执行成功,则返回值大于等于0;否则返回值为-1。

procedure OpenForShare(const FileName: String);

var
  FileHandle : Integer;
begin
  FileHandle := FileOpen(FileName, fmOpenWrite or fmShareDenyNone);
  if FileHandle > 0 then
    {valid file handle}
  else
    {Open error: FileHandle = negative DOS error code}
end;

FileSearch

function FileSearch(const Name, DirList: string): string;:在指定路径中搜索指定的文件。其中DirList用于输入文件所在路径,如有多个路径,中间需要用;。如未找到文件,则返回空值;否则返回的是文件名称。

procedure TForm1.btn_SearchFileClick(Sender: TObject);
var
  FileToFind : string;
begin
  FileToFind := FileSearch(edit_FileName.Text,GetCurrentDir);
  if FileToFind = '' then
    ShowMessage('不能找到文件')
  else
    ShowMessage('找到文件:'+FileToFind);
end; 

 

6. DirectoryExists

function DirectoryExists(const Directory: string): Boolean;:判断指定的目录是否存在。如果目录存在,则返回true;否则返回false。其中Directory如果是绝对路径,则在该绝对路径下查找,否则则在当前项目路径下查找。

 

7.FileRead、FileSeek、FileWrite

FileRead

function FileRead(Handle: Integer; var Buffer; Count: Integer): Integer;:从指定文件(当前文件指针)中读取相应字节的数据,同时调整文件指针位置。其中,buffer用于保存从文件中读取的数据;count表示读取的字节数。返回实际读取的字节数。

FileSeek

function FileSeek(Handle, Offset, Origin: Integer): Integer; overload;
function FileSeek(Handle: Integer; const Offset: Int64; Origin: Integer): Int64; overload;

能够重新定位文件读写指针。其中Origin表示源点(0表示指针在文件的开始;1表示指针在当前文件的位置;2表示指针在文件的末尾);handle为FileOpen或FileCreate返回的值;Offset表示位移量。如果FileSeek执行成功,则返回新的文件指针;否则返回-1。

procedure TForm1.btn_ReadClick(Sender: TObject);
var
  fend : integer;
  fOpen : THandle;
  buffer : PChar;
  count : integer;
  i: integer;
begin
  {文件读取分为:1.已指定方式打开文件;2.利用fileSeek获取字符长度;3.重新定位文件指针,使其从头开始;
  4.为buffer分配内存空间;5.读取文件内存,返回长度;6.关闭文件;}
  fOpen := FileOpen('F:\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;

FileWirte

function FileWrite(Handle: Integer; const Buffer; Count: Integer): Integer;:将缓存区中的内容写入到文件中。其中buffer用于写入文件的数据;count指定写入数据的长度。

{写入文件}
procedure TForm1.btn_WriteClick(Sender: TObject);
var
  fOpen : THandle;
  result : integer;
  buffer : PChar;
begin
  fOpen := FileOpen('F:/test.txt',fmOpenReadWrite);
  if fOpen <> -1 then
  begin
  FileSeek(fOpen,0,2);
  buffer := PChar(edit_FileName.Text);  //将编辑框中的内容放到buffer缓冲区中
  result := FileWrite(fOpen,buffer^,StrLen(buffer));
  if result <> -1 then
    ShowMessage('写入成功!')
  else
    ShowMessage('写入失败');
  end
  else
    ShowMessage('未找到文件');
  FileClose(fOpen);
end;


8.FindClose、FindFirst、FindNext

FindClose

procedure FindClose(var F: TSearchRec);:终止一个查找过程,并释放查找文件所分配的空间。其中F为TSearchRec类型的结构,记录文件搜索时的一些信息。而FindClose中的参数值来源于FindFirst或FindNext函数。

FindFirst

function FindFirst(const Path: string; Attr: Integer; var F: TSearchRec): Integer;:在指定目录中搜索第一个指定属性的文件。其中Attr(faReadOnly、faHidden、faSysFile、faVolumeID、faDirectory(23)、faArchive、faAnyFile)

FindNext

function FindNext(var F: TSearchRec): Integer;:继续查找指定的文件。其中F为FindFirst查找文件或得到的信息。如结果返回为0,则说明函数执行成功;否则执行失败。

{查找指定目录的文件}
procedure TForm1.btn_SearchClick(Sender: TObject);
begin
  FindFile(Trim(edit_FileName.Text));
end;


{自定义文件查找方法}
procedure TForm1.FindFile(filename: string);
var
  path : string;
begin
  if FindFirst(filename + '*.*',faAnyFile,search)=0 then  //
    begin
      if (search.Name<>'.') and (search.Name<>'..') then    //判断路径下是否还包含子路径
        memo_showfile.Lines.Add(search.Name);
      while FindNext(search) = 0 do
      begin
        path := filename + '\'+search.Name+'\';
        if(search.Name<>'.') and(search.Name<>'..') then
          memo_showfile.Lines.Add(search.Name);
        if (search.Attr = faDirectory) and (search.Name<>'.') and (search.Name<>'..') then
          FindFile(path);    //如果search.Name为目录,则重新执行FindFile函数
      end;
      Caption := IntToStr(memo_showfile.Lines.Count);  //显示记录条数
    end;
end;

{停止查找}
procedure TForm1.btn_StopSearchClick(Sender: TObject);
begin
  FindClose(search);
end;

对于FindFirst、FindNext来说,F.Attr=32表示文件;F.Attr = 16表示目录。
 



 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值