zoukankan      html  css  js  c++  java
  • Delphi中获取路径的函数

    Delphi中获取路径的函数
    //********获取当前路径***************

    GetCurrentDir() //获取当前的Windows打开的目录,无斜'\'

    extractFilepath(application.exeName); //获取某个程序的目录,有斜'\'

    ExtractFilePath(ParamStr(0)); //获取当前运行文件的目录,有斜'\'
    ExtractFileDir(Application.Exename); //获取某个程序的目录,无斜'\'

    ExtractFileName('C:\test\123.txt');  //取得文件名 123.txt

    察看文件是否存在
    FileExists(FileName:String):Boolean;

    判断文件路径是否存在

    DirectoryExists('C:\test\');

    改变文件扩展名
    ChangeFileExt(FileName:String)

    得到文件的扩展名
    ExtractFileExt(FileName:String):String;

    SysUtils 单元中有 ExtractFileDir 与 ExtractFilePath两个类似的函数, 用哪一个?没有太大的关系。
      不过有以下的差别: ExtractFilePath 传回值的最後一个字元是反斜杠"/"。

    通过tapplication.exename特性可以获取当前进程的进程和文件名,要从中提取信息,
    可以调用下列函数:(假设路径和名称是c:\delphi\bin\project.exe):  
      extractfiledir()     c:\delphi\bin  
      extractfiledrive()   c:  
      extractfileext()     .exe  
      extractfilename()    project.exe  
      extractfilepath()    c:\delphi\bin\
      extractfiledir()     c:\delphi\bin
     
    用法示例:  ExtractFilePath(Application.ExeName);
     

    以下引用片段:


    偶然从 SysUtils 里发现了几个路径相关的函数, 以前没见过, 可能是 2010 新增的:


    GetLocaleDirectory();
    GetLocaleFile();
    LocaleDirectoryExists();
    LocaleFileExists();
    --------------------------------------------------------------------------------

    应用测试:
    --------------------------------------------------------------------------------
     
    uses IOUtils;

    procedure TForm1.FormCreate(Sender: TObject);
    var
      p,f: string;
      b: Boolean;
    begin
      {设置与获取当前路径}
      SetCurrentDir('C:\Temp\');
      ShowMessage(GetCurrentDir);         { C:\Temp }

      {获取当前目录下子目录的全路径}
      p := GetLocaleDirectory('ABC');
      ShowMessage(p);                     { C:\Temp\ABC\ }

      {获取当前目录下文件的全路径}
      f := GetLocaleFile('X.txt');
      ShowMessage(f);                     { C:\Temp\X.txt }
      f := GetLocaleFile('ABC\X.txt');
      ShowMessage(f);                     { C:\Temp\ABC\X.txt }

      {IOUtils 下的 TPath 也有类似功能}
      f := TPath.GetFullPath('X.txt');
      ShowMessage(f);                     { C:\Temp\X.txt }
      f := TPath.GetFullPath('ABC\X.txt');
      ShowMessage(f);                     { C:\Temp\ABC\X.txt }

      {判断当前文件夹下的文件或子文件夹是否存在}
      b := LocaleDirectoryExists('ABC'); //这相当于: DirectoryExists(GetCurrentDir + '\ABC');
      b := LocaleFileExists('X.txt');    //这相当于: FileExists(GetCurrentDir + '\X.txt');
    end;

    1、文件名函数
      文件名函数可以对文件的名称、所在子目录、驱动器和扩展名等进行操作。下表列出这些函数及其功能。

    函数 说明
    ExpandFileName() 返回文件的全路径(含驱动器、路径)
    ExtractFileExt() 从文件名中抽取扩展名
    ExtractFileName() 从文件名中抽取不含路径的文件名
    ExtractFilePath() 从文件名中抽取路径名
    ExtractFileDir() 从文件名中抽取目录名
    ExtractFileDrive() 从文件名中抽取驱动器名
    ChangeFileExt() 改变文件的扩展名
    ExpandUNCFileName() 返回含有网络驱动器的文件全路径
    ExtractRelativePath() 从文件名中抽取相对路径信息
    ExtractShortPathName() 把文件名转化为DOS的8·3格式
    MatchesMask() 检查文件是否与指定的文件名格式匹配

    ExtractFilePath(FileName:String)
    该函数返回路径名,其结尾字符总是“\”

    ExtractFileDir(FileName:String)
    该函数同样返回路径名,但不包括结尾的字符“\”,除非返回的路径是根目录。

      下面就把这些函数作一一介绍:

    ⑴ExpandFileName()
      原型:extern PACKAGE AnsiString __fastcall ExpandFileName(const AnsiString FileName);

      功能:返回文件的全路径(含驱动器、路径)

      参数:FileName:要处理的文件名

      例:ShowMessage(ExpandFileName(Application->ExeName));//显示你的程序文件名,如C:\MyBCB\Sample1.EXE

    ⑵ExtractFileExt()
      原型:extern PACKAGE AnsiString __fastcall ExtractFileExt(const AnsiString FileName);

      功能:从文件名中抽取扩展名

      参数:FileName:要处理的文件名(全路径)

      例:ShowMessage(ExtractFileExt(Application->ExeName));//显示".exe"

    ⑶ExtractFileName()
      原型:extern PACKAGE AnsiString __fastcall ExtractFileName(const AnsiString FileName);

      功能:从文件名中抽取不含路径的文件名

      参数:FileName:要处理的文件名

      例:ShowMessage(ExtractFileExt("c:\\Winnt\\SOL.EXE"));//显示"SOL.EXE"

    ⑷ExtractFilePath()
      原型:extern PACKAGE AnsiString __fastcall ExtractFilePath(const AnsiString FileName);

      功能:从文件名中抽取路径名

      参数:FileName:要处理的文件名

      例:ShowMessage(ExtractFilePath("Winnt\\SOL.EXE"));//显示"Winnt\"

    ⑸ExtractFileDir()
      原型:extern PACKAGE AnsiString __fastcall ExtractFileDir(const AnsiString FileName);

      功能:从文件名中抽取目录名(和上个函数不同,不包括最后的"\")

      参数:FileName:要处理的文件名

      例:ShowMessage(ExtractFileDir("Winnt\\SOL.EXE"));//显示"Winnt",注意和上个函数的区别

    ⑹ExtractFileDrive()
      原型:extern PACKAGE AnsiString __fastcall ExtractFileDrive(const AnsiString FileName);

      功能:从文件名中抽取驱动器名

      参数:FileName:要处理的文件名

      例:ShowMessage(ExtractFileDrive("c:\\Winnt\\SOL.EXE"));//显示"c:"

    ⑺ChangeFileExt()
      原型:extern PACKAGE System::AnsiString __fastcall ChangeFileExt(const System::AnsiString FileName, const System::AnsiString Extension);

      功能:更改文件名的扩展名,不是对真正的文件进行改名,只是对文件名这个字符串进行处理

      参数:FileName:要改名的文件名,Extension:新的扩展名

      例:ShowMessage(ChangeFileExt("c:\\Winnt\\SOL.EXE",".OOO"));//显示"c:\winnt\SOL.OOO"

    ⑻ExpandUNCFileName()
      原型:extern PACKAGE AnsiString __fastcall ExpandUNCFileName(const AnsiString FileName);

      功能:返回含有网络驱动器的文件全路径,格式为:\\机器名\共享名\文件名

      参数:FileName:要处理的文件名

      例:ShowMessage(ExpandUNCFileName("F:\\Winnt\\SOL.EXE"));/*如果F:是映射的网络驱动器\\NT40\WINNT,则显示"\\NT40\WINNT\SOL.EXE"*/

    ⑼ExtractRelativePath()
      原型:extern PACKAGE AnsiString __fastcall ExtractRelativePath(const AnsiString BaseName, const AnsiString DestName);

      功能:从文件名中抽取相对路径信息,如"..\sss\ss.asd"这种形式

      参数:BaseName:基准文件名;DestName:目标文件名

      例:ShowMessage(ExtractRelativePath("D:\\Source\\c\\1.123","D:\\Source\\Asm\\dz.asm"));/*显示"..\asm\dz.asm"*/

    ⑽ExtractShortPathName()
      原型:extern PACKAGE AnsiString __fastcall ExtractShortPathName(const AnsiString FileName);

      功能:把文件名转换为DOS的8、3格式

      参数:FileName:要处理的文件名

      例:ShowMessage(ExtractShortPathName("E:\\Program Files\\Dual Wheel Mouse\\4dmain.exe"));/*显示"E:\Progra~1\dualwh~1\4dmain.exe"*/

    ⑾MatchesMask()
      原型:extern PACKAGE bool __fastcall MatchesMask(const AnsiString Filename, const AnsiString Mask);

      功能:检查文件是否与指定的文件名格式匹配

      参数:FileName:要处理的文件名;Mask:文件名格式,支持通配符

      例:ShowMessage(MatchesMask("Lxf.exe","*.?x?));//显示"true"

  • 相关阅读:
    inux下tcpdump命令的使用
    git的命令行输出正确地显示中文文件名
    mysql权限修改记录
    Linux日常之以当前时间命名文件
    Linux 设置定时任务crontab命令
    (转)NodeJS
    (转)NodeJS收发GET和POST请求
    nodejs入门最简单例子
    「网易官方」极客战记(codecombat)攻略-游戏开发2-瓶颈-chokepoint
    「网易官方」极客战记(codecombat)攻略-游戏开发2-中心队形-center-formation
  • 原文地址:https://www.cnblogs.com/MaxWoods/p/2178722.html
Copyright © 2011-2022 走看看