IOS中相對位址與絕對位址的轉換

2021-09-01 07:10:25 字數 1748 閱讀 3598

**:

ios程式有固定的檔案訪問限制,只能在自己的沙盒內。

uiimage *img=[uiimage imagenamed:@"cellicon.png"];

這段**從相對路徑載入了乙個png資源作為uiimage物件,沒有任何問題。因為它在內部已經偷偷得幫你把路徑轉化為相對路徑了,你還不知道吧!

接下來,如果要載入一些自定義格式的檔案或者資料,就會出現相對路徑和絕對路徑的問題。比如

nsfilehandle

*filehandle=[

nsfilehandle

filehandleforreadingatpath:newpath];

newpath為乙個字串路徑,這裡的路徑你卻不能像上面那樣

nsfilehandle

*filehandle=[

nsfilehandle

filehandleforreadingatpath:@"test.txt"];

這樣系統是找不到檔案的,因為這裡需要的是檔案的絕對路徑,而@「test.txt」完全是無效的。

這個時候就需要nsbundle的幫忙了,這個類專門用來負責路徑轉化等等功能那。大家都知道ios專案雖然在xcode下可以建立資料夾結構,但是實際上它是沒有檔案結構概念的,所以此時假如要載入放在專案目錄下的test.txt檔案,完整的**應該是這樣

方法1:

nsstring

*newpath=[

nsstring

stringwithformat:

@"%@%@%@"

,[[nsbundle

mainbundle]resourcepath],

@"/"

,path];

nslog(@"url=%@",newpath);

nsfilehandle *filehandle=[nsfilehandle

filehandleforreadingatpath:newpath];

此處[nsbundle

nsbundle

nsstring

stringwithformat:

@"%@%@%@"

,[[nsbundle

mainbundle]resourcepath],

@"/"

,path];這麼簡單的字串拼接,我就不多說了,

控制台輸出拼接後完整檔案絕對路徑:

方法2:

nsstring *newpath=[[nsbundle mainbundle] pathforresource:@"test" oftype:@"txt"];

nsfilehandle *filehandle=[nsfilehandle

filehandleforreadingatpath:newpath];

[[nsbundle mainbundle] pathforresource:@"test" oftype:@"jat"];前面的就不再介紹了,pathforresource方法有兩個引數,前面這個為檔名,後面那個oftype就是檔案型別,也就是檔案字尾。這裡把檔名和字尾分開了,如果這是你得到的是乙個完整的檔名如:@「test.txt」,那麼你得自己想辦法把檔名和字尾分開了。

要特別說明,此處的檔案字尾是不需要「.」的,如果寫成@「.jat」是錯誤的,載入檔案會失敗。

相對位址轉絕對位址

發乙個相對位址轉絕對位址的函式 今天在研究jquery ajax功能的時候遇到乙個問題,通過 load url a load乙個網頁的鏈結後獲取到的位址資訊是相對於當前執行ajax程式的網頁的絕對位址。比如我在 c x a.html 網頁執行 www.romotc.com 網頁中有乙個鏈結 a bo...

URI URL URN,相對位址 絕對位址

uri uniform resource identifier 標準資源標示符,可以進一步分為定位器 名稱,或者二者兼具 通過一定規則解碼可以得到資源位置 在html中的href採用的是uri引用 uri引用分為絕對引用和相對引用 絕對引用以方案名和冒號開頭,其他為相對引用 url uniform ...

相對位址和絕對位址

什麼是相對位址 document.location.href 就是相對位址跳轉,這個方法實現的是在當前路徑的基礎上進行跳轉 什麼是絕對位址 網路位址顧名思義就是直接跳轉到網路的位址,以http或者https等開頭的位址,這種位址可以直接跳轉到頁面 本地位址如果沒有特別說明在哪乙個盤,那麼所有的跳轉都...