關於文件路徑的那些事

文件操作裏,第一步就是文件路徑的或獲取
很多人不在意使用系統自帶的“過濾裝置”自己寫了文件的過濾函數
一方面減慢了開發的流程,另一方面加大了出現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

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章