全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3595
推到 Plurk!
推到 Facebook!

[C++] 如何取得一個檔案的所在完整路徑

尚未結案
jackyung
一般會員


發表:22
回覆:46
積分:13
註冊:2004-01-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-09 22:08:51 IP:218.171.xxx.xxx 未訂閱
以下函數可取得一個檔案的所在完整路徑,但 執行期間會暫時切換目前路徑,在多執行緒下 不夠安全,不知有沒有其他替代方法    
// 注意!執行期間會暫時切換目前目錄
char *GetFullPath(const char *filename)
{      char *Ret;      char *OldDir = new char[MAXPATH]; // 先保存目前目錄
  getcwd(OldDir, MAXPATH);             char *NewDir = new char[MAXPATH];
  strcpy(NewDir,filename);
  strcat(NewDir,"\\.");
  
  chdir(NewDir);
  getcwd(NewDir, MAXPATH);
  Ret = NewDir;
  
  chdir(OldDir);
  delete [] OldDir;        return Ret;  
}
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-10 00:19:46 IP:211.22.xxx.xxx 未訂閱
getcwd(NewDir, MAXPATH); 是取得目前工作目錄吧!為了在執行期間可能變換工作目錄,又有多執行序的問題,建議將目前目錄放在一個CLASS的私有變數中,利用EnterCriticalSection與 LeaveCriticalSection小心存取。請參閱站內連結點 http://delphi.ktop.com.tw/topic.php?topic_id=49583 ----------------------------------------------- Creation is the fundation of promotion.
jackyung
一般會員


發表:22
回覆:46
積分:13
註冊:2004-01-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-10 06:49:37 IP:218.171.xxx.xxx 未訂閱
我是想要知道如何取得某一個檔案的所在完整路徑, 那個函數是利用切換目前工作目錄的方式來取得檔案的 所在完整路徑,但切換期間若有其他執行緒做檔案處 理(不是呼叫那個函數),可能會有問題
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-10 08:53:56 IP:61.66.xxx.xxx 未訂閱
jackyung你好:    是要這樣子嗎??    http://delphi.ktop.com.tw/topic.php?topic_id=35185 【BCB】【問題】請問如何取得正在執行的程式位置
jackyung
一般會員


發表:22
回覆:46
積分:13
註冊:2004-01-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-05-10 10:00:15 IP:218.171.xxx.xxx 未訂閱
用一個例子做說明: 假設目前的工作目錄是 c:\test\dir1 使用者要程式用 ..\dir2\a.log 做記錄檔, 然後使用者切換到其他工作目錄,為了確保不 管在任何情況下都能找到 a.log,須記錄完整 的絕對路徑,那個函數雖能達到目地,但會影 響到其他執行緒,有沒有更好的辦法,還有希 望在 linux 平台也能使用
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-05-10 19:50:33 IP:211.22.xxx.xxx 未訂閱
按照你得說法,我覺得情況應該沒有那麼複雜吧?!在程式起始時,THREAD未啟動前,先查出那個檔案的絕對路徑,既然知道了絕對路徑,跟執行時切換工作目錄開啟那個特定位置的檔案應不會有所關連!請察看一下開檔的庫存函數參數是否正確。 ----------------------------------------------- Creation is the fundation of promotion.
jackyung
一般會員


發表:22
回覆:46
積分:13
註冊:2004-01-24

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-05-11 09:17:11 IP:218.171.xxx.xxx 未訂閱
那個函數在單一執行緒,或未啟動多執行緒前是很好用, 但在多執行緒下,由使用者即時去指定檔案,就有隱憂, 在 Win32 是有提供取得檔案位置的功能,可是在標準 C/C 我找不到,不知有沒有更好的辦法
系統時間:2024-11-22 8:08:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!