iOS之系統文件目錄

因為iOS的封閉性,很大可能上,較多的工程師做了很長時間開發(fā)也不知道設備上的系統文件目錄結構到底是怎樣的。數據存儲時,我們也基本是通過代碼訪問沙盒中默認的幾個文件夾,但對沙盒在設備上的全路徑未必關注過。

盡管不了解系統目錄存放并不影響正常業(yè)務功能開發(fā),但對系統目錄在腦袋里有個基本印象總是好的,說不定某個細節(jié)點就可避免犯常識性的低級錯誤。

查看設備上的系統目錄,在Mac上安裝iTools連接一個越獄設備即可。下圖是截自越獄設備iPhone 5s、系統版本為8.3的文件目錄。接下來,將依次介紹下系統相關的目錄。

file system

系統根目錄下一級目錄

iOS源自OS X,而OS X也是使用Unix系統內核,因此其目錄結構基本符合Unix系統目錄結構。實際上,在根目錄下包含兩類目錄,一類是保留的Unix傳統目錄,一類是iOS/OS X特有的目錄。

保留的Unix傳統目錄

./bin:“binary”的簡稱,存放傳統Unix命令(用戶級基礎功能二進制文件),如ls、ps、rm、mv等。
./boot:存放能使系統成功啟動的所有文件,iOS中此目錄為空。
./dev:“device”的簡稱,存放BSD設備文件。每個文件代表系統的一個塊設備或字符設備,一般來說,“快設備”以快為單位傳輸數據,如硬盤;而“字符設備”以字符為單位傳輸數據,如調制解調器。
./etc:“Et Cetera”的簡稱,存放系統腳本及配置文件,如passwd、hosts等。iOS/OS X中/etc實際指向./private/etc。
./lib:存放系統庫文件、內核模塊及設備驅動等,iOS中此目錄為空。
./mnt:“mount”的簡稱,存放臨時文件系統掛載點,iOS中此目錄為空。
./sbin:“system binaries”的簡稱,存放Unix管理類命令(系統級基礎功能的二進制文件),如netstat、reboot、fdisk、ifconfig等。
./tmp:存放臨時文件目錄,其權限為所有人任意讀寫,在OS X中實際指向./private/tmp。
./usr:存放大量工具和程序,第三方程序安裝目錄,其中./usr/lib中存放了動態(tài)鏈接庫。
./var:“variable”的簡寫,存放一些經常更改的文件,如日志、用戶數據、臨時文件等,iOS/OS X中./var實際指向./private/var。某些文件在./Library./var都存在,比如Keychains數據、系統日志等。

iOS/OS X特有的目錄

./Applications:存放系統默認預裝的應用,不包括從App Store下載安裝的應用。
./Developer:存放與開發(fā)調試相關的文件和工具二進制文件,當設備連接Xcode時選擇了“Use for Development”才會被創(chuàng)建。
./Library:存放系統應用數據、幫助文件、文檔等。
./System:只包含一個名為Library的目錄,這個子目錄中存放了系統的絕大部分組件,如各種framework,內核模塊,字體文件等。
./User:用戶目錄,存放用戶的個人資料和配置,iOS中實際指向./var/mobile。
./cores:內核轉儲文件存放目錄,當一個進程崩潰時,如果系統允許則會產生轉儲文件。
./private:存放/etc、/var兩個鏈接目錄的目標目錄,分別是./private/etc和/private/var

部分系統目錄

./var/root/Library/Lockdown:設備激活證書存放目錄。
./Library/Keychains:設備系統級密碼等存放目錄。
./Library/Logs:系統日志存放目錄,./var/logs也指向此目錄。
./Library/Logs/CrashReporter:系統進程崩潰日志目錄。
./System/Library/LaunchDaemon:系統啟動進程plist文件存放目錄,若想不啟動某進程,刪除該目錄下對應的plist的文件(操作需慎重,刪除之前先備份)。
./System/Library/Frameworks:公有框架(開發(fā)者可使用)存放目錄。
./System/Library/PrivateFrameworks:私有框架(開發(fā)者不可使用)存放目錄。
./System/Library/CoreServices/SpringBoard.app:桌面管理器應用,用戶與系統交互的中介。
./var/mobile/Containers:存放App Store應用相關文件,其中,子目錄/Bundle存放應用可執(zhí)行文件,子目錄/Data存放應用數據。

部分系統應用資料存放目錄

./var/wireless/Library/CallHistory:存放通話記錄,網絡流量,使用時間等記錄。
./var/mobile/Library/AddressBook:存放聯系人數據。
./var/mobile/Library/Calendar:存放日歷及提醒事項記錄文件。
./var/mobile/Library/Maps:存放地圖搜索書簽記錄。
./var/mobile/Library/SMS:存放短信。
./var/mobile/Library/Notes:存放備忘錄。
./var/mobile/Library/Safari:存放Safari保存的書簽等。
./var/mobile/Library/Mail:存放電子郵件數據。
./var/mobile/Library/Preferences/com.apple.accountsettings.plist:存放郵箱設置。
./var/mobile/Library/Preferences/com.apple.mobilephone.speeddial.plist :存放個人收藏(快速撥號)。
./var/mobile/Media/Recordings:存放語音備忘錄。
./var/mobile/Media/iTunes_Control:存放iTunes 同步的電影,歌曲等媒體文件。
./var/mobile/Media/DCIM:存放照片里面的膠卷。
./var/mobile/Media/PhotoData:存放照片里面的圖片(含相機膠卷的識別庫縮略圖等)。
./var/mobile/Media/Books:存放iBooks同步的書籍。
./var/mobile/Media/PhotoStreamsData:存放照片流。

應用沙盒目錄

下圖中紅線框就是某個應用的沙盒目錄,應用只能訪問自己沙盒目錄里面的文件(某些目錄文件在用戶授權的情況下可訪問,如系統通訊錄、照片等媒體文件)。在應用開發(fā)中,如果要保存沙盒中某個文件路徑,注意不要保存全路徑,只能保存在沙盒中的相對路徑,要不會導致路徑訪問錯誤。這是因為每次重新編譯安裝應用時,沙盒目錄路徑會改變。以下是對每個文件夾的作用進行說明:

sandbox

Documents:用來存放僅限于不可再生的數據文件,會被iTunes同步。
Documents/Inbox:用來存放由外部應用請求當前應用程序打開的文件,會被iTunes同步。
Library:用來存放默認設置或其它狀態(tài)信息,除Caches子目錄之外的文件會被iTunes同步。
Library/Preferences:使用NSUserDefaults寫的設置數據都會保存到該目錄下的一個plist文件中,會被iTunes同步。
tmp:用來存放應用再次啟動時不需要的臨時文件,該目錄下的東西隨時可能被系統清理掉,不會被iTunes同步。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容