文件名函数

本文详细介绍了文件操作中常用的函数,包括获取文件全路径、扩展名、文件名、路径、目录、驱动器名等,以及如何修改文件扩展名、解析UNC文件名、抽取相对路径、转换为DOS短路径名和检查文件名匹配。通过实例演示了每个函数的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

⑴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"

### 将文件名作为参数传递给函数 在不同编程语言中,可以采用多种方式将文件名作为参数传递给函数。以下是几种常见编程语言中的实现方法。 #### Python 中的实现 Python 提供了一种简洁的方式来处理文件操作并将文件名作为参数传递给函数: ```python def process_file(filename): with open(filename, 'r') as file: content = file.read() print(f"File {filename} contents:") print(content) process_file('example.txt') ``` 此代码定义了一个 `process_file` 函数,该函数接受一个名为 `filename` 的参数并读取其内容[^1]。 #### MATLAB 中的实现 对于MATLAB环境下的情况,在调用由MATLAB编译器生成的C++ DLL接口时,如果涉及到文件路径或名称的操作,同样可以通过参数形式传入。不过具体到直接处理文件的情况较少见于DLL导出函数场景下;更常见的做法是在MATLAB内部通过函数接收文件名参数来执行相应操作: ```matlab function result = readDataFromFile(filename) fid = fopen(filename,'rt'); if(fid == -1) error('Cannot open file %s', filename); end data = textscan(fid,'%f%f','Delimiter',','); fclose(fid); result = cell2mat(data); end ``` 这段代码展示了如何创建一个能够接收文件名作为输入参数的自定义MATLAB函数,并从中读取数据。 #### Shell 脚本中的实现 Shell脚本可以直接利用命令行参数特性轻松完成这一任务。下面的例子说明了怎样编写一段简单的bash shell script来获取外部提供的文件名参数,并对其进行基本处理: ```shell #!/bin/bash echo "Processing $1..." cat "$1" ``` 在这个例子中,`$1` 表示传递给脚本的第一个参数——即要打开和显示内容的目标文件的名字[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值