檔案操作中的幾個大坑

發表於2016-11-15
在程式開發中你經常會碰到很多關於路徑的問題的。比如讀取檔案,寫檔案等,載入一張圖片,讀取一個配製,你必要傳一個檔案的路徑。然而你也許常常碰到這樣的問題:邏輯是對的,但就出不來你想要的結果。這是為什麼呢?因為對於檔案操作的路徑問題,有很多你稍不慎就會掉入的大坑。

這裡寫圖片描述

說幾個掉進大坑的慘痛經歷

1.編譯一個C++的工程,工程中要用到cmake工具,而cmake安裝在C:Program Files (x86)cmake2.8(程式預設安裝時,安裝到這個目錄是很正常不是嗎)。然而問題來了,工程怎麼編不過,報一個很詭異的異常:

Microsoft.CppCommon targets(151, 5):error MSB6006:”cmd.exe” exited with code 3.

後來我把cmake安裝目錄的整個資料夾拷到了C:Program Filescmake2.8,工程編譯正常。但就因為這一個問題,半天的時間一下就沒了……

2.由於工程配製的需要,要寫一個指令碼,指令碼的功能很簡單,就把一個檔案從A目錄拷貝(複製)到B目錄。於是很自然地就寫了這樣一行命令:

很簡單吧,沒有邏輯錯誤吧!但結果呢?結果這樣的:
這裡寫圖片描述
我瞅了一眼又一眼,config.txt這個檔案確實是存在的,而且路徑也是正確的。

然後我進行了一個嘗試:
這裡寫圖片描述

然後我直接把config.txt複製一份到D:config.txt,再進行了一次嘗試:
這裡寫圖片描述
Ok,它成功了!

作為一個C++程式設計師,取一個“C++Workspace“這樣資料夾作為工作目錄也是可以理解的吧!但結果卻是花了我半個多小時解決上面這個問題。於是我不得不把”C++Workspace“改成了”CppWorkspace“,然後寫這樣一行命令:

這裡寫圖片描述
Ok,一切正常!

3.還有的還有,我就不一一舉例了,總之關於路徑問題,坑很多……

如何跳過大坑?

那如何避免掉進大坑呢?大體總結以下幾點,可依次循著這個思路逐步排查:
1. 檢查寫的路徑是否正確;
2. 檢查要操作的目錄、檔案是否具有許可權,如讀寫許可權(Linux系統或類Unix系統中還有執行許可權);
3. 檢查路徑中是否包含特殊的字元,如’(‘、’)’、’’、’ ‘、’+’、’-‘、’:’、’%’、’&’、’#’、’$’、’!’、’|’、’*’、’@’、’?’、’,’等;
4. 注意絕對路徑與相對路徑的問題。

當你怎麼也搞不定一個問題,並且邏輯也沒有錯誤時,就不要悶頭苦幹了!按照上面的思路檢查一下是不是路徑的問題吧。

相關文章