关于文件路径的那些事

来源:互联网 发布:网络舆论和大众舆论 编辑:程序博客网 时间:2024/04/30 04:37

文件操作里,第一步就是文件路径的或获取
很多人不在意使用系统自带的“过滤装置”自己写了文件的过滤函数
一方面减慢了开发的流程,另一方面加大了出现BUG的可能性

 

 

首先我们最最常用的就是要知道我们现在所开发的程序的相关文件路径信息
这个一般用:ParamStr函数
我们看一下帮助文档发现ParamStr的作用是:

 

 

Returns a specified parameter from the command-line.
(在命令行里获得规定的函数)

 

 

声明:
Delphi syntax:
function ParamStr(Index: Integer): string;
C++ syntax:
extern PACKAGE AnsiString __fastcall ParamStr(int Index);

 

 

On Windows, ParamStr(0) returns the path and file name of the executing program (for example, C:/TEST/MYPROG.EXE).
(在Windows操作系统里,参数为0时返回执行程序的路径和文件名)

 

 

那么如是输入是别的参数返回的是什么呢?
测试了一下,返回的是空值,上网查一下,发现:

 

 

0后面的参数就是在exe文件后面可以跟参数,paramstr 获取的就是exe文件后面跟参数。
如有可执行文件project1.exe 在运行中输入   e:/project1.exe 123 456 789 
那么paramstr(1)='123' paramstr(2)='456' paramstr(3)='789'
用shellexecute的话可以在parameters参数位置输入值。不同的参数值之间用空格隔开
如 shellexecute(application.Handle,'open','project4.exe','123 456', 'e:/',SW_SHOW);
所以用paramstr可以在应用程序间进行数据传输 
(以上paramstr分析 截取 http://apps.hi.baidu.com/share/detail/16669076 )

 

 

好了我们现在得到了一个文件名的完全了,比如:
D:/Backup/我的文档/工作项目管理/用法Demo/Extract相关函数/ExtractSomething.exe

 

 

那么接下来我们还有很多对它的过滤操作:
比如:
ExtractFilePath 会过滤掉文件名,只剩下路径:
D:/Backup/我的文档/工作项目管理/用法Demo/Extract相关函数/

 

 

ExtractFileDir 也会过滤掉文件名,不同的事,她得到的是“目录”不是“路径”,这里WINDOWS区分得很清楚:
D:/Backup/我的文档/工作项目管理/用法Demo/Extract相关函数

 

 

ExtractFileDrive 得到文件所在驱动器名,也就是文件所在的根目录
D:

 

 

ExtractFileName 得到文件名
ExtractSomething.exe

 

 

ExtractFileExt 得到文件的后缀,也就是扩展名
.exe

 

 

ExtractShortPathName 这个比较有意思,刚开始用的不知道SHORT在这里是什么意思
难道这文件名还可以有缩写?
我们看一下它得到了什么:
D:/Backup/我的文档/工作项~1/用法Demo/EXTRAC~1/EXTRAC~1.EXE
这是什么意思呢?我们看一下帮助文档:
ExtractShortPathName converts the file name, FileName, to the short 8.3 form. ExtractShortPathName returns an empty string if the file or directory does not exist.
也就是说,它把文件名转成了DOC 8.3命名规则了,这个命名规则是有标号的,于是文件一定要存在才行,否则会返回空

 

 

那么什么是DOC 8.3文件命名规则呢?
上微软查一下:
在 Windows NT 文件系统 (NTFS) 支持最大为 255 个字符长文件名。在大多数的情况中 NTFS 还会生成一个 MS-DOS 兼容文件名 (8.3 (filename.extension) 格式,使一个基于 ms-dos-或 16 位的基于 Windows 的应用程序访问同一文件中。
有兴趣请查阅http://support.microsoft.com/kb/101601

 

 

 

 

原创粉丝点击